2.1exec(无上下文,远程执行命令)
var Client = require('ssh2').Client;
var conn = new Client();
conn.on('ready', function() {
conn.exec('uname -a', function(err, stream) {
if (err) throw err;
stream.on('close', function(code, signal) {
conn.end();
}).on('data', function(data) {
console.log('STDOUT: ' + data);
}).stderr.on('data', function(data) {
console.log('STDERR: ' + data);
});
});
}).connect({
host: '192.168.6.150',
port: 22,
username: 'slview',
password: 'slview#2012'
//privateKey: require('fs').readFileSync('/home/admin/.ssh/id_dsa')
});
运行结果正常
D:\fk\work\node\ssh>node tsshexec.js
STDOUT: Linux master 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x
86_64 x86_64 x86_64 GNU/Linux
注意: 如果返回数据较多,那么会分包, ondata会多次调用,
2.2shell模式(多个命令交互)
var Client = require('ssh2').Client;
var conn = new Client();
conn.on('ready', function() {
console.log('Client :: ready');
conn.shell(function(err, stream) {
if (err) throw err;
stream.on('close', function() {
console.log('Stream :: close');
conn.end();
}).on('data', function(data) {
console.log('STDOUT: ' + data);
}).stderr.on('data', function(data) {
console.log('STDERR: ' + data);
});
stream.end('cd test\nls -l\nexit\n');
});
}).connect({
host: '192.168.6.150',
port: 22,
username: 'slview',
password: 'slview#2012'
});
2.2.1连接高版本ssh没问题。
D:\fk\work\node\ssh>node tsshshdev.js
Client :: ready
STDOUT: Last login: Tue Oct 25 17:43:58 2016 from 219.143.200.152
STDOUT: ssh -V
exit
STDOUT: -bash-4.1$ ssh -V
STDOUT: OpenSSH_7.1p1, OpenSSL 1.0.1m 19 Mar 2015
-bash-4.1$ exit
STDOUT: logout
Stream :: close
D:\fk\work\node\ssh>
2.2.2连接设备模拟器
有点小问题,serverhostkey格式不对(开启debug,定位问题)
\ssh\node_modules\ssh2-streams\lib\constant.js
var DEFAULT_SERVER_HOST_KEY = [
'ssh-rsa'
];
补充ssh-dss(原来是在suport里面,默认未开启)
var DEFAULT_SERVER_HOST_KEY = [
'ssh-rsa',
'ssh-dss'
];
登录居然也一次过
var Client = require('ssh2').Client;
var conn = new Client();
conn.on('ready', function() {
console.log('Client :: ready');
conn.shell(function(err, stream) {
if (err) throw err;
stream.on('close', function() {
console.log('Stream :: close');
conn.end();
}).on('data', function(data) {
console.log('STDOUT: ' + data);
}).stderr.on('data', function(data) {
console.log('STDERR: ' + data);
});
//huawei
//stream.write('display version\n');
//stream.write('screen-length 0 temporary\n'); //more的问题
//stream.write('?'); //more的问题
//stream.end('logout\n');
//iox
//stream.write('show version\n');
//stream.end('exit\n');
//ios
stream.write('en\nshow version\n');
stream.end('exit\n');
});
}).connect({
host: '192.168.6.150',
//huawei 登录ok
//port: 10022,
//iox 登录ok
//port: 10023,
//ios 登录ok
port: 10024,
username: 'admin',
password: 'admin',
//debug: function(str) { console.log('%j', str); }
//password: 'Wygmwbl@0431'
});