我必须在节点js的同一ssh shell中执行多个命令。我为此使用simple-ssh。但是由于sudo情况,执行停止。
下面的代码包含四个我需要在同一ssh中执行的命令。在命令切换用户到root之后,执行停止。我无法在单独的ssh中执行第三条命令,因为命令cd和切换用户将不会在新的ssh中执行。
var cmd = 'cd /home/sample/test/core/build/bin/' + "\n" + 'sudo su root'
+ "\n" + 'su test' + "\n" + './app'
ssh.exec(cmd, {
pty: true,
out: function (stdout) {
console.log(stdout);
},
err: function (stdout) {
console.log(stdout);
}
}).start();
我想用相同的ssh执行这四个命令。有什么办法可以实现?我也很乐于从simple-ssh转移到任何其他可以执行此操作的npm。
答案 0 :(得分:0)
不确定使用的是哪个npm模块。但是您可以使用ssh2shell
这将命令数组作为参数
commands:["cd /home/sample/test/core/build/bin/", "sudo su root", "su test", "./app"]
脚本编写愉快!
答案 1 :(得分:0)
sudo su root 将创建一个新的shell(和su测试),因此将不接收语句序列。 尝试与-c
结合使用双qoutes封装maarten@Mint19:~$ cat su_test.sh
sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"