使用简单的ssh使用同一shell执行多个命令

时间:2018-12-28 09:10:11

标签: javascript node.js ssh

我必须在节点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。

2 个答案:

答案 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"