nodejs在远程linux服务器上执行命令

use*_*sam 5 node.js

从 nodejs 我一直试图在远程服务器上执行 linux 命令并在流中获取输出以进行进一步处理。为了连接到远程 linux 服务器,我拥有所有必要的详细信息,例如 serverip、用户名和密码。我在互联网上搜索了很多,发现这可以通过 ssh 来实现。

Nodejs ui页面可以将shell cmd运行到远程机器并运行脚本吗

但是这个答案有点令人困惑,我不知道如何在连接中使用密码。

指向任何工作示例的指针都会有很大帮助。

use*_*sam 7

我自己解决了这个问题。有一个 npm 包 (ssh-exec) 可用于 ssh 命令执行。下面是我使用的代码。

var exec = require('ssh-exec')
var v_host = 'XX.XX.XX.XXX'
exec('ls -lh', {
  user: 'root',
  host: 'XX.XX.XX.XXX', 
  password: 'password'
}).pipe(process.stdout , function (err, data) {
    if ( err ) { console.log(v_host); console.log(err); }
  console.log(data)
})
Run Code Online (Sandbox Code Playgroud)


use*_*sam 5

我还使用了另一个包“simple-ssh”来解决这个问题。它使用起来非常简单,并且可以很好地控制可以像流一样使用的输出。

var SSH = require('simple-ssh');

var ssh = new SSH({
    host: 'XX.XX.XX.XXX',
    user: 'username',
    pass: 'password'
});

ssh.exec('ls -lh', {
    out: function(stdout) {
        console.log(stdout);
    }
}).start();
Run Code Online (Sandbox Code Playgroud)

并根据需要结束执行

ssh.end();
Run Code Online (Sandbox Code Playgroud)

其中 ssh 只不过是我们之前声明的新 SSH。