从Node.js启动交互式SSH

时间:2018-10-29 16:39:07

标签: node.js

我有一个包含IP,端口,用户和密码的文本Blob,我想在这里写一个小的实用程序脚本:

  • 将文本粘贴到标准输入
  • 使用正则表达式或其他任何方式提取连接详细信息
  • 使用节点使用我的解析值以交互方式启动ssh

如何从带有参数的节点启动ssh命令,退出节点并继续ssh'ing?我发现的有关child_process的文档涉及在节点内启动和控制流程,但是我只想退出并在ssh启动后接手。

1 个答案:

答案 0 :(得分:1)

以下代码将满足您的要求,并根据需要进行调整。该程序执行以下操作:

  • 从文件中读取port
  • 提示您输入主机名,并从stdin读取数据
  • 使用ssh启动child_process.fork

代码:

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'ing

我不知道在任何编程语言中都可以做到这一点,但是更好的答案可以纠正我。而是启动子进程并将所有输入/输出重定向到该子进程。从您的角度来看,您仅与ssh进行交互,因此node进程仍作为ssh的父级存在的事实对您是透明的。

例如,perl中的等效命令为system("ssh");