cmd='ls -all' などの単純なコマンドを実行すると、出力が返されますが、これを使用して完了するまでに時間がかかるコマンドを実行すると、取得できません。何も返されませんでした。
この例では、lftp を使用していくつかのフォルダーをミラーリングし、応答を取得したいと考えています。ターミナルからコマンドを実行すると、もちろん出力が表示されますが、子プロセスを使用すると何も得られません。
var childProcess = require('child_process');
var cmd = 'lftp sftp://user:password@somehost -e "mirror -R --delete --parallel=5 /usr/share/scripts/ /volumes/folders/usr/share/;bye"';
childProcess.exec(cmd, function (error, stdout, stderr) {
console.log('stdout:'+stdout);
console.log('stderr:'+stderr);
console.log('error:'+error);
});
spawn メソッドも試しましたが、そこから何も返されませんでした:
var spawn = require('child_process').spawn;
var lftp = spawn('lftp',['sftp://user:password@somehost', '-e "mirror -R --delete --parallel=5 /usr/share/scripts/ /volumes/folders/usr/share/;bye"']);
lftp.stdout.on('data', function(data) {
console.log(data.toString());
});