Я пытаюсь запустить простую команду ssh через nodejs child_process. когда я запускаю команду через код nodejs, он не говорит, что команда, которую я отправил на сервер, не найдена. когда я запускаю ту же команду, просто скопируйте и вставьте в окно терминала, все работает нормально.
вот версия командной строки того, что я пытаюсь сделать:
ssh [email protected] 'ls -lai'
а вот версия той же команды ssh для nodejs, использующая child_process
var cproc = require('child_process');
var exec = cproc.exec;
var spawn = cproc.spawn;
var command = "ssh";
var args = ["[email protected]", "'ls -lai'"];
var child = spawn(command, args);
child.stdout.on('data', function(data) {
console.log('stdout: ' + data);
});
child.stderr.on('data', function(data) {
console.log('stderr: ' + data);
});
child.on('close', function(code) {
console.log('exit code: ' + code);
process.exit();
});
вывод из версии командной строки именно то, что я ожидаю... я получаю список каталогов. но когда я запускаю этот код nodejs для выполнения той же команды, срабатывает код обратного вызова stderr, и команда возвращает код 127 (команда не найдена).
$ node test-ssh.js
stderr: bash: ls -lai: command not found
exit code: 127
судя по выходным данным, команда 'ls -lai' не найдена... но это не имеет смысла, так как она отлично работает, когда я запускаю ее напрямую из командной строки терминала.
кто-нибудь знает, почему запуск ssh через nodejs может привести к этому?