在节点中使用pty和ssh2来执行sudo命令

时间:2014-12-19 03:20:37

标签: node.js ssh libssh2

我需要使用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
});

有人可以解释一下这个的正确用法吗?

2 个答案:

答案 0 :(得分:4)

您必须为sudo提示解析stream输出。那时,您必须stream.write(password + '\n');。执行所有操作的替代方法是修改/etc/sudoers,以便登录用户可以为特定程序/脚本执行sudo /无需密码。

答案 1 :(得分:1)

我认为您应该将stream.write(password + '\n');放在stream.on('exit',....行之后。