我试图在我的代码中从ssh-client块外部检索变量 stdout 的内容:
var SSH = require('simple-ssh');
var ssh = new SSH({
host: 'localhost',
user: 'username',
pass: 'password'
});
ssh.exec('echo $PATH', {
out: function(stdout) {
console.log(stdout);
}
}).start();
我需要这个变量的数据,因为在代码的另一部分我需要用另一个函数解析它(删除\ n并删除' |'作为分隔符和方法&#34 ;拆分")并使用oracledb-module将此信息写入Oracle数据库。 我还尝试将ssh.exec与变量关联起来,如下所示:
var retreiveData = function ssh.exec('echo $PATH', {
out: function(stdout) {
console.log(stdout); // I tried to change it to "return stdout;"
}
}).start();
console.log(retrieveData());
但这对我没有用。 求你帮帮我。
答案 0 :(得分:1)
这是一种具有异步性质的回调模式。因此,为了保持stdout
回调函数处理程序中返回的out
所代表的数据,您需要在
var SSH = require('simple-ssh');
function echo(callback) {
var ssh = new SSH({
host: 'localhost',
user: 'username',
pass: 'password'
});
var data = '';
var error = null;
ssh.exec('echo $PATH', {
out: function(stdout) {
data += stdout;
},
exit: function(code) {
if (code != 0) return callback(new Error('exit code: ' + code));
// here's all the data you have persisted from stdout
return callback(error, data);
},
error: function(err) {
error = err;
}
}).start();
}
echo(function(err, data) {
if (err) {
// handle potential err
console.error(err.stack);
} else {
// work with data as intended
console.log(data);
}
});