我正在编写一个脚本来确定远程服务器的操作系统,然后根据结果,仅在第一个命令(特定于服务器的操作系统)之后 之后运行另一个命令。我正在通过ssh2-promise
库(基于原始ssh2
进行此操作。第一次运行exec()
时没有任何问题。第二次我在同一SSH连接上调用exec()
,它将关闭并返回No response from server
错误。
let myClass = new MyClass({
host: "...",
port: "...",
username: "...",
password: "..."
});
myClass.wrapper();
function MyClass(config) {
let SSH = require('ssh2-promise');
let connection = new SSH(config);
function first() {
return new Promise((resolve, reject) => {
connection.exec('some_command_to_exec')
.then((data) => {
resolve(data);
})
.catch((error) => {
reject(error);
});
});
}
function second() {
return new Promise((resolve, reject) => {
connection.exec('other_command_to_exec')
.then((data) => {
resolve(data);
})
.catch((error) => {
reject(error);
});
});
}
this.wrapper = () => {
first()
.then((response) => {
return second(response.connection);
})
.then((response) => {
console.log(response);
});
}
}
现在,我尝试不重用同一连接,并在每个exec()
上打开一个新连接,如下所示:
function MyClass(config) {
function first () {
let connection = new SSH(config);
//...
}
function second () {
let connection = new SSH(config);
//...
}
//...
}
但是结果是一样的,连接只是关闭。这可能是什么问题? SSH2
库的Github上仅提及此问题,没有产生有用的结果。