如何在未知命令类型的 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
我正在尝试传递从其他地方收到的节点 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