从Node.js启动交互式SSH

4
我有一个文本块,其中包含IP、端口、用户名和密码,并希望编写一个小型实用程序脚本,以便我可以:
  • 将文本粘贴到标准输入中
  • 使用正则表达式或其他方法提取连接详细信息
  • 使用node以交互方式启动ssh,使用解析后的值
如何从node中使用参数启动ssh命令,退出node并继续ssh?我找到的关于child_process的文档涉及在node内部启动和控制进程,但我只想在ssh启动后退出并接管。
1个回答

2
以下代码将符合您的要求,请根据需要进行调整。该程序执行以下操作:
  • 从文件中读取端口
  • 提示您输入主机名,从stdin读取数据
  • 使用child_process.fork启动ssh
代码如下:
var port = require('fs').readFileSync('port.txt');

const rl = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('Enter hostname: ', (answer) => {
  require('child_process').spawn('ssh', [answer, port],
    {stdio: [process.stdin, process.stdout, process.stderr]});
});

除了以下问题之外,该问题已得到解答:
退出节点并继续使用SSH连接。
我不知道这在任何编程语言中是否可能,但更好的答案可以纠正我。相反,您启动子进程并将所有输入/输出重定向到它。从您的角度来看,您只与ssh交互,因此node进程作为ssh的父进程仍存在对您是透明的。
例如,Perl中的等效命令是system(“ssh”);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接