gpt4 book ai didi

javascript - ssh2连接到多个服务器并获取输出nodejs

转载 作者:太空宇宙 更新时间:2023-11-03 22:28:31 24 4
gpt4 key购买 nike

我正在使用 ssh2 nodejs 模块连接到 UNIX 应用程序并运行脚本,并且成功。现在我想一一连接到多个服务器并获取输出并存储它。当我尝试使用 for 循环将服务器从 json 作为输入逐一传递到 ssh2 时,for 循环的完成速度比应该从服务器获取输出的 block 快得多。这也导致我握手错误。请帮忙

这是代码

inc_cron.schedule("*/20 * * * * *", function(id) {    
});

//inc_cron.js

var cronFunction = function(inputStr) {
if(appNames['applications'].length>0){
for (i = 0; i < appNames["applications"].length; i++) {
getDataFromServer(appNames["applications"][i].Name,appNames["applications"][i].hostname, appNames["applications"][i].username, appNames["applications"][i].password, appNames["applications"][i].log_path, function(err, data) {
if(err) {
logger.info("Error is in cronFunction = ", err);
} else if(data) {
output_data +=data;
} ssh.close_second();
});
}
}
}

var getDataFromServer = function(Name,hostname, username, password, log_path, cb) {
ssh.close_second();
ssh.connect_second({
host: hostname,
username: username,
password: password
}, function(err) {
if(err) {
logger.error('Err: ', err);
} else {
ssh.sftp("",'grep -o "ERROR" '+log_path+'.log.'+yr+'-'+mnth+'-* | wc -l', function(err, data) {
cb(err, data);
}); } }); }


//connect.js

SSHConnection.prototype.sftp = function(type, path, cb) {
var self = this;
var log_data = '';
self.connection2.exec(path +' ' + type, { pty: true }, function(err, stream) {
if (err) {
logger.log('SECOND :: exec error: ' + err);
}
stream.on('end', function() {
self.connection2.end(); // close parent (and this) connection
}).on('data', function(data) {
logger.info(data.toString());
});
});
};

最佳答案

在不监视代码的情况下,请确保正确处理 ssh2 的异步问题...使用 promise 工厂。

关于javascript - ssh2连接到多个服务器并获取输出nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41613880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com