1

我的代码看起来像这样

var Client = require('ssh2').Client;
var fs=require('fs');
var conn = new Client();
conn.on('ready', function() {
    console.log('Client :: ready');
    conn.shell('xtail', function(err, stream) {
        stream.write('xtail\n\r');
        if (err) throw err;
        stream.on('close', function(code, signal) {
            console.log('Stream :: close :: code: ' + code + ', signal: ' + signal);
            conn.end();
        }).on('data', function(data) {
           // stream.stdin.write('?');
            console.log('hey');
            console.log('STDOUT: ' + data);
            fs.appendFile('D:\\Breme\\As1.txt',data,function(err){
                if(err)
                {
                    console.log(err);
                }
                //console.log('file saving..')
            });
            // setTimeout(function(){
            //     process.exit(1);
            // }, 20000);
        }).stderr.on('data', function(data) {
            console.log('STDERR: ' + data);
            conn.destroy();

        });
    });
}).connect({
    host: '10.214.14.15',
    port: 22,
    username: 'bwadn',
    password: 'bwain'
});

连接到服务器后,我正在下载文件,但我想从客户端发送“Ctrl+C”命令,以便它停止接收数据

任何人都可以帮我解决这个问题,因为我是 NodeJS 的新手,我需要你的支持来解决这个问题......谢谢

4

1 回答 1

0

在这种特殊情况下,最可靠的方法tail是使用

 stream.write('\x03'); //send ctrl+c

当您知道不再需要xtail输出时,您需要发送它。讨论手段超出了这个问题的范围,但setTimeout绝对不是一个好主意。

替代(首选)方法:

stream.signal('INT')

其他用途见Ssh2 Channel API

于 2021-10-29T04:51:25.207 回答