SSH连接在第一个exec()

时间:2019-07-19 14:32:12

标签: node.js ssh promise

我正在编写一个脚本来确定远程服务器的操作系统,然后根据结果,仅在第一个命令(特定于服务器的操作系统)之后 之后运行另一个命令。我正在通过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上仅提及此问题,没有产生有用的结果。

0 个答案:

没有答案