【发布时间】:2021-06-28 00:07:35
【问题描述】:
我正在使用 npm 的 simple-ssh 模块以 root 用户身份连接到远程主机。
我还有一个超级用户帐户serviceUser。我需要对这个用户做一个su 并执行几个命令。但是su serviceUser(注意:su serviceUser 是无密码的)没有被执行。
代码如下:
var ssh = new SSH({
host: hostserver,
user: 'root',
timeout: 1500000,
key: require('fs').readFileSync("D:/Keys_pair_prvt_pub/rsa_key"),
agent: process.env.SSH_AUTH_SOCK,
agentForward: true
});
ssh
.exec('whoami',{
out: function(stdout) {
logs += stdout;
console.log(stdout);
}
})
.exec('su serviceUser',{
out: function(stdout) {
logs += stdout;
console.log(stdout);
}
})
.exec('sh myScript.sh',{
out: function(stdout) {
logs += stdout;
console.log(stdout);
}
})
.exec('echo "exiting shell"',{
out: function(){
try{
ssh.end();
console.log("exiting");
defer.resolve(obj);
} catch(err){
defer.reject(err);
}
}
}).start();
.exec('whoami',{ 块正在执行,但 .exec('su serviceUser',{ 块没有。
在输出控制台中,由于whoami,我将root 作为输出,但之后没有任何反应。
请帮忙。
【问题讨论】:
-
当你运行 'su' 时,它会以特定用户的身份执行一个 shell(如
/bin/bash)。所以命令阻塞的原因可能是因为它已经启动了 bash 并且现在正在等待通过标准输入的命令。你到底想做什么? -
@brm,我正在尝试以
serviceUser帐户运行一些命令.. 假设sh myScript.sh需要以serviceUser运行。为此,我需要使用su serviceUser,但它不起作用。 -
你需要启动第二个脚本还是第一个程序也需要向它发送命令?
-
@brm,我需要以
root用户身份启动主程序。然后我需要将命令sh myScript.sh执行为serviceUser。所以基本上我需要做类似的事情:su serviceUser "sh myScript.sh". -
除了使用
su,您还可以使用process.setuid和process.setgid删除您的root 权限
标签: javascript node.js npm