我需要使用npm ssh2模块为node.js在ssh上启动sudo命令; 只阅读模块的文档我无法弄清楚如何使用pty选项:
ssh.on('ready', function() {
//not working sudo command:
ssh.exec('cd /var/www/website && sudo mkdir myDir', { pty: true }, function(err, stream) {
if (err) throw err;
stream.on('exit', function(code, signal) {
console.log('exit code: ' + code + ' signal: ' + signal);
ssh.end();
});
});
}).connect({
host: configuration.sshAddress,
port: 22,
username: configuration.sshUser,
password: configuration.sshPass
});
有人可以解释一下这个的正确用法吗?
答案 0 :(得分:4)
您必须为sudo提示解析stream
输出。那时,您必须stream.write(password + '\n');
。执行所有操作的替代方法是修改/etc/sudoers
,以便登录用户可以为特定程序/脚本执行sudo /无需密码。
答案 1 :(得分:1)
我认为您应该将stream.write(password + '\n');
放在stream.on('exit',....
行之后。