使用具有简单 ssh 的相同外壳执行多个命令



我必须在node js的同一个ssh shell中执行多个命令。我为此使用简单的 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。

不确定您使用的是哪个 npm 模块。但是你可以通过使用ssh2shell来实现这一点。

这将命令数组作为参数

commands:["cd /home/sample/test/core/build/bin/", "sudo su root", "su test", "./app"]

快乐的脚本编写!

sudo su 根将创建一个新的 shell(和 su 测试),因此它不会接收语句序列。尝试将双 qoutes 与 -c 结合使用进行封装

maarten@Mint19:~$ cat su_test.sh 
sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"

最新更新