SSH进入远程机器并在Node.js中执行命令

时间:2017-08-18 20:18:44

标签: javascript node.js

我正在寻找一种SSH到虚拟机的方法,然后使用Node.js在虚拟机内执行某些脚本

到目前为止,我已经创建了自动登录虚拟机的shell脚本,但我无法弄清楚如何继续前进。

我的用于登录远程服务器的shell脚本

spawn ssh root@localhost
expect "password"
send "123456"
send "\r"
interact

这是我的server.js

var http = require('http');
var execProcess = require("./exec_process.js");
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  execProcess.result("sh sshpass.sh", function(err, response){
        if(!err){
            res.end(response);
        }else {
            res.end("Error: ", err);
        }
    });
}).listen(3000);
console.log('Server listening on port 3000');

exec_process.js

var exec = require('child_process').exec;

var result = function(command, cb){
    var child = exec(command, function(err, stdout, stderr){
        if(err != null){
            return cb(new Error(err), null);
        }else if(typeof(stderr) != "string"){
            return cb(new Error(stderr), null);
        }else{
            return cb(null, stdout);
        }
    });
}

exports.result = result;

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

为什么不使用simple-ssh

我做了一个简单的例子,说明如何使用命令列表加载文件并在链中执行它们。

exampleList:(命令必须以新行分隔)

$scope.deleteTodo = function(id){
    $http.delete('/api/todos/'+ id).then(function(response){
        var data = response.data;
        $scope.todos = data;
    });
}

sshtool.js:(它可能是错误的,例如:如果任何命令包含echo "Testing the first command" ls

\n

它使用underscore来循环执行命令列表。