node.js - 如何在 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 的方式运行我的神秘命令?
解决方案
我发现了这个问题。
首先,上面问题的答案是spawn(command, { stdio: "inherit", shell: true})
。工作得很好。
我遇到的问题是 ssh 的密码部分不使用标准输入/输出。它使用别的东西。
https://github.com/nodejs/node-v0.x-archive/issues/1157#issuecomment-7339123
推荐阅读
- email - 将当前活动工作表中的指定范围通过电子邮件发送为 PDF
- firebase - Firebase 从多个设备同时更新单个文档
- android - 如何制作当有人在手机上安装时自动隐藏的 Flutter App
- imagemagick - ImageMagick Webp 被识别为 VIDEO
- javascript - 在 Javascript 中提取 JPA 命名参数
- python - 列表理解适用于从另一个列表中删除匹配项?
- javascript - 如何使用相同的触发器播放音频和视频
- sql - 拆分oracle sql中的给定列
- python - Python Tkinter 代码-TypeError:“按钮”对象不可调用
- typescript - 常量列表 = ['aa', 'bb', 'cc']; 类型 obj = { aa: 任何;bb:任何;cc: any} 我们知道列表,以及如何在 typescript 中获取类型 obj