我正在寻找一种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;
感谢任何帮助
答案 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来循环执行命令列表。