Javascript Node.JS RemoteExec调用未正确触发
在数据库中查询要执行命令的服务器列表。阵列已正确填充并按计划发出回声,但未发生任何连接。我尝试将数组直接传递到rexec,并通过forEachAsync循环。两者都不能正确处理服务器列表。我是否不正确地引用数组元素 请注意最后的语法错误,我只是尝试包含我尝试过的两种方法Javascript Node.JS RemoteExec调用未正确触发,javascript,node.js,remote-execution,Javascript,Node.js,Remote Execution,在数据库中查询要执行命令的服务器列表。阵列已正确填充并按计划发出回声,但未发生任何连接。我尝试将数组直接传递到rexec,并通过forEachAsync循环。两者都不能正确处理服务器列表。我是否不正确地引用数组元素 请注意最后的语法错误,我只是尝试包含我尝试过的两种方法 #! var mysql = require('mysql'); var resultset = require('node-array'); var rexec = require('remote-exec');
#!
var mysql = require('mysql');
var resultset = require('node-array');
var rexec = require('remote-exec');
var fs = require('fs');
var _ = require('lodash');
//var streamBuffers = require('stream-buffers');
var moment = require('moment');
var util = require('util');
var now = moment().format('YYYYMMDD_HHmmss');
var logStdout = process.stdout;
var errStderr = process.stderr;
console.log = function () {
logStdout.write(util.format.apply(null, arguments) + '\n');
}
console.error = function () {
errStderr.write(util.format.apply(null, arguments) + '\n');
}
var connection = mysql.createConnection({
host : 'abc',
user : 'user',
password : '******',
database : 'db'
});
var ssh_options = {
port: 22,
username: 'e109gh',
privateKey: fs.readFileSync('R:/nodeJS/sshkey.priv'),
stdout: fs.createWriteStream('./out.txt'),
stderr: fs.createWriteStream('./err.txt')
}
var my_conn_options = _.clone(ssh_options);
var cmds = ['hostname -i'];
connection.query('SELECT name FROM server', function(err, rows) {
rows.forEachAsync(function(element, index, array) {
console.log(element.name);
rexec(element.name,cmds,my_conn_options,function(err){
if (err) {
now = moment().format('YYYY-MM-DD HH:mm:ss');
console.error(err);
} else {
console.log("it worked for "+element.name);
}
});
});
});
// var buffer = new streamBuffers.WritableStreamBuffer();
connection.end(function(err) {});
// my_conn_options.stdout = buffer;
//
// rexec(rows,cmds,my_conn_options,function(err){
// if (err) {
// now = moment().format('YYYY-MM-DD HH:mm:ss');
// console.error(err);
// } else {
// console.log()
// }
// });
//
//});
您在控制台.log中得到了什么错误?
{[error:getaddrinfo ENOTFOUND dev1 dev1:22]code:'ENOTFOUND',errno:'ENOTFOUND',syscall:'getaddrinfo',hostname:'dev1',host:'dev1',port:22,level:'connection socket'}
后跟[错误:等待握手时超时]
这让我觉得主机字符串的格式不正确。没有连接问题-我可以对主机进行ssh/ping/etc操作。