如何在未知命令类型的 nodejs 中生成进程?

How can I spawn a process in nodejs with unknown command type?

我正在尝试传递从其他地方收到的节点 js 中的命令。为了使问题简单化,假设有一个函数 returns 以下内容(尽管我无法提前知道):

echo "your password is test" & ssh root@1.1.1.1

我想把上面的文字 运行 正确。因为 ssh 使用 stdin,所以 exec 不会成功,spawn 似乎是最好的选择。但是因为 spawn 需要一个命令和参数列表,所以它不太适合其中带有 & 的东西。

理想情况下,我希望能够 运行:

const command = mysteryCommand();  // echo "your password is test" & ssh root@1.1.1.1

spawn(command, {
  stdio: "inherit",
});

但到目前为止,这还没有被证明有效。我尝试过的其他事情包括:

spawn(command, { stdio: "ignore", detached: true}) // 错误

spawn(command, { stdio: "inherit", shell: true}) // 输出,但输入似乎不起作用

如何运行我的神秘命令以继承标准输入输出的方式?

我找到问题了。

首先,上述问题的答案是spawn(command, { stdio: "inherit", shell: true})。工作正常。

我遇到的问题是 ssh 的密码部分不使用 stdin/out。它使用了其他东西。

https://github.com/nodejs/node-v0.x-archive/issues/1157#issuecomment-7339123