我正在尝试传递从其他地方收到的节点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的方式运行我的神秘命令?
答案 0 :(得分:0)
我找到了问题。
首先,上述问题的答案是spawn(command, { stdio: "inherit", shell: true})
。效果很好。
我遇到的问题是ssh的密码部分不使用stdin / out。它使用其他东西。
https://github.com/nodejs/node-v0.x-archive/issues/1157#issuecomment-7339123