我目前正在构建一个基于Web的SSH客户端。我使用node和SSH2模块来连接Linux机器。问题是试图确定服务器何时在等待来自客户端的响应,即"sudo“。
this.onWsMessage = function(packet) {
log('Message Received from ');
if (cmd != '') {
log('----------------------------------------->' + cmd);
source[this.getId()].sshStream.write(cmd + '\n');
}
};
var client = clients[cid];
sshClient
.on('ready', function() {
console.log('CONNECTED');
sshClient.shell({pty: true}, function(err, stream) {
_shellHandler(err, stream, client);
});
})
.on('error', function(err) {
console.log('ERROR', err);
})
.connect(serverInfo);
}
function _shellHandler(err, stream, client) {
source[client.getId()].sshStream = stream;
stream
.on('close', function() {
log('ssh connection close');
//sshClient.end();
this._client.end();
})
.on('data', function(data) {
console.log(stream);
var msg = data.toString().replace(msgPattern, '');
this.sendUTF(msg, 'ssh');
}.bind(client));
}
我一直在浏览文档,但我无法识别任何触发事件的结果。
发布于 2016-03-24 13:31:35
没有简单的方法可以做到这一点。基本上,您必须缓冲流输出并不断地在缓冲区中搜索预期的(sudo)提示,或者使用像streamsearch这样的模块在流中搜索特定的字符串,而无需显式地缓冲和持续搜索。
https://stackoverflow.com/questions/36193330
复制相似问题