首页 > 解决方案 > 如何在 nodejs 中生成具有未知命令类型的进程?

问题描述

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

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

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

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

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 的方式运行我的神秘命令?

标签: node.jsstdiospawn

解决方案


我发现了这个问题。

首先,上面问题的答案是spawn(command, { stdio: "inherit", shell: true})。工作得很好。

我遇到的问题是 ssh 的密码部分不使用标准输入/输出。它使用别的东西。

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


推荐阅读