Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.JS RemoteExec调用未正确触发_Javascript_Node.js_Remote Execution - Fatal编程技术网

Javascript Node.JS RemoteExec调用未正确触发

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');

在数据库中查询要执行命令的服务器列表。阵列已正确填充并按计划发出回声,但未发生任何连接。我尝试将数组直接传递到rexec,并通过forEachAsync循环。两者都不能正确处理服务器列表。我是否不正确地引用数组元素

请注意最后的语法错误,我只是尝试包含我尝试过的两种方法

#!
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操作。