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

时间:2018-08-16 21:15:58

标签: node.js stdio spawn

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

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

我想把上面的文字正确地运行。由于ssh使用标准输入,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}) //输出,但是输入似乎不起作用

如何以继承stdio的方式运行我的神秘命令?

1 个答案:

答案 0 :(得分:0)

我找到了问题。

首先,上述问题的答案是spawn(command, { stdio: "inherit", shell: true})。效果很好。

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

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