节点 ssh2 为一个简单的 ls 命令发送多个数据事件

Node ssh2 sends multiple data events for a simple ls command

本文关键字:ls 命令 事件 数据 简单 ssh2 一个 节点      更新时间:2023-09-26

我正在尝试在本地主机上使用节点 ssh 连接做一个简单的"ls"。代码是这样的,

var Connection = require('ssh2');
var conn = new Connection();
conn.on('ready', function() {
  conn.shell('uptime', function(err, stream) {
    if (err) throw err;
    stream.on('data', function(data) {
      console.log('STDOUT: ' + data);
    });
    stream.end('ls');
  });
}).connect({
  host: '127.0.0.1',
  port: 22,
  username: '*****',
  password: '*****'
});

我得到了多个数据事件,输出如下,

STDOUT: Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-24-generic x86_64)
* Documentation:  https://help.ubuntu.com/
STDOUT: 
Last login: Sun Dec 28 09:28:21 2014 from localhost
STDOUT: ls
STDOUT: sk@sk-box:~$ l
STDOUT: s

我在这里做错了什么?

在命令后附加换行符ls

var Connection = require('ssh2');
var conn = new Connection();
conn.on('ready', function() {
  conn.shell('uptime', function(err, stream) {
    if (err) throw err;
    stream.on('data', function(data) {
      console.log('STDOUT: ' + data);
    });
    stream.end('ls'n');
  });
}).connect({
  host: '127.0.0.1',
  port: 22,
  username: '*****',
  password: '*****'
});