Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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
Node.js 正在使用节点JS中的ssh2保持连接的活动状态_Node.js_Ssh - Fatal编程技术网

Node.js 正在使用节点JS中的ssh2保持连接的活动状态

Node.js 正在使用节点JS中的ssh2保持连接的活动状态,node.js,ssh,Node.js,Ssh,我构建了一个基于的功能,目标是通过CLI连接到服务器、路由器或防火墙。连接和结果成功,但调用函数end()时连接未关闭 根据,客户端方法end()关闭连接并断开套接字 end()-(无效)-断开插座的连接 代码如下: var Client = require('ssh2').Client; var conn = new Client(); conn.on('ready', function (err) { if (err) { console.log('Error co

我构建了一个基于的功能,目标是通过CLI连接到服务器、路由器或防火墙。连接和结果成功,但调用函数
end()
时连接未关闭

根据,客户端方法
end()
关闭连接并断开套接字

end()-(无效)-断开插座的连接

代码如下:

var Client = require('ssh2').Client;
var conn = new Client();

conn.on('ready', function (err) {
    if (err) {
        console.log('Error connecting... ' + err);
    }
    conn.exec(_command, function (err, stream) {
        stream.write(_command);
        if (err)
            console.log('Error executing command... ' + err);
        stream.on('data', function (data, stderr) {
            if (stderr)
                console.log('Error... ' + stderr);
            else {
                //some actions using the result string
            }
        }).on('exit', function (code, signal) {
            console.log('Exited with code ' + code);
            conn.end();
        });
        stream.end('\n');
    });
})
.on('error', function (err) {
    console.log(err);
}).on('end', function () {
    console.log('Client :: ended');
    conn.end();
})
.connect({
    host: _host,
    port: port,
    username: username,
    password: password
});

出了什么问题或缺少了什么?

试试现代版的
ssh2
。您链接到的示例和文件集适用于较旧的、不受支持的分支。此外,“正常运行时间”命令不从stdin读取,因此
stream.write('uptime')
stream.end()
是不必要的。谢谢@mscdex,我想我有了最新版本的
ssh2
。对于你的第二个评论,你说的是对的,这只是一个例子,我正在执行的命令之一是在防火墙中显示系统信息,为此我需要编写流。你能用
npm ls--depth=0
验证
ssh2
的安装版本吗?示例代码仍然过时,尤其是
'data'
处理程序。stdout和stderr现在是独立的流。@mscdex我已经使用npm页面模块的示例更新了代码。问题仍然存在,感谢您的帮助。