我試圖通過nodejs child_process運行一個簡單的ssh命令。當我通過nodejs代碼運行命令時,它失敗,說沒有找到我發送到服務器的命令。當我運行相同的命令只需複製&粘貼到我的終端窗口,它運行良好。ssh與nodejs child_process,服務器上找不到命令
這裏是我想要做的命令行版本:
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」命令沒有找到,但沒有任何意義,因爲當我直接運行這個從我的終端提示符工作完全正常。
有人知道爲什麼通過nodejs運行ssh會導致這種情況發生?