我正在node.js中执行一个程序,将我的代码从git部署到服务器(Digital Ocean)。我通过ssh2模块连接到服务器并通过shell运行命令,如下面:
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('sudo apt-get update -y\nsudo apt-get install -y build-essential\nexit\n');
});
}).connect({
host: 'x.x.x.x',
port: 22,
username: 'yyy',
privateKey: 'zzz'
});
命令“apt-get update”工作正常,但命令“apt-get install build-essential”(我试图安装其他程序,如vim和curl)似乎冻结输出的最后一行的流。 我认为它可能是由apt-get的提示“Y / n”引起的,但是我找不到它的解决方法。有人知道如何处理它吗?
答案 0 :(得分:2)
尝试使用\n
更改&&
:
stream.end('sudo apt-get update -y && sudo apt-get install -y build-essential && exit');