Я блуждаю, есть ли действительное решение для удаленного терминала в OpenWRT-Box из NodeJS-APP?Удаленный терминал NodeJS для Dropbear OpenWRT-Server
Подключение от терминала работает: ssh -i ~/.myKeys/id_rsa [email protected]
BusyBox v1.23.2 (2015-04-22 23:25:48 UTC) встроенный в скорлупе (пеплом)
корень @ OpenWRT: ~ #
only interactive ssh solution для NodeJS не делает интерактивную часть, как описано в README.md следующим образом:
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('ls -l\nexit\n');
});
}).connect({
host: '192.168.100.100',
port: 22,
username: 'frylock',
privateKey: require('fs').readFileSync('/here/is/my/key')
});
Он тестируется только на OpenSSH. Также a solution setting atop of этот узел ssh2 не работает. Он был построен, чтобы определить подсказку (например)
Так что моя следующая идея была, чтобы выполнить команду оболочки с стандартным вводом и стандартным выводом, как child_process
var spawn = require('child_process').spawn;
var ssh = spawn('ssh', ['-tt', '[email protected]'+host]);
process.stdin.resume();
process.stdin.on('data', function (chunk) {
ssh.stdin.write(chunk);
});
... висит также, как первое решение.
Моя последняя идея состояла в том, чтобы выйти из NodeJS-приложения и выполнить команду ssh
с параметрами из завершенного NodeJS-приложения. Но я не мог найти способ сделать это. Подумав об этом, я заметил ... это всего лишь код ошибки, ничего больше, что возвращается из завершенного процесса. Таким образом, это должен быть child_process, который получает полный stdin/stdout/stderr ... но каков правильный способ сделать это?
И это работает с Dropbear-серверами?
Here you can find the virtual machine I am testing against.
ОК, спасибо - полезно знать. – Danny