簡體   English   中英

從nodejs啟動交互式ssh

[英]Launch interactive ssh from nodejs

我有一個包含ip,port,user和passord的文本blob,我想寫一個小實用程序腳本,我可以:

  • 將文本粘貼到stdin中
  • 使用正則表達式或任何其他方法提取連接詳細信息
  • 使用node以使用我的解析值以交互方式啟動ssh

如何從帶有參數的節點啟動ssh命令,退出節點並繼續ssh'ing? 我發現的關於ie child_process的文檔涉及在節點內啟動和控制進程,但我只想退出並在ssh啟動后接管。

以下代碼符合您的要求,根據您的需求進行調整。 該計划執行以下操作:

  • 從文件中讀取port
  • 提示您輸入主機名,從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'ing

我不知道任何編程語言都有可能,但更好的答案可以糾正我。 相反,您啟動子進程並將所有輸入/輸出重定向到它。 從您的角度來看,您只與ssh交互,因此node進程仍然作為ssh的父進程存在這一事實對您來說是透明的。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM