Выполнить несколько команд с помощью одной оболочки с простым SSH - PullRequest
0 голосов
/ 28 декабря 2018

Мне нужно выполнить несколько команд в одной оболочке ssh в узле js.Я использую Simple-SSH для этого.Но выполнение останавливается из-за случая sudo.

В приведенном ниже коде есть четыре команды, которые мне нужно было выполнить в одном и том же ssh.Выполнение останавливается после того, как команда переключит пользователя в root.Я не могу выполнить третью команду в отдельном ssh, так как команды cd и switch user не будут выполняться в новом 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 голосов
/ 28 декабря 2018

sudo su root создаст новую оболочку (и su test) и, следовательно, не получит последовательность операторов.Попробуйте инкапсулировать с двойными qoutes в сочетании с -c

maarten@Mint19:~$ cat su_test.sh 
sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"
0 голосов
/ 28 декабря 2018

Не уверен, какой модуль npm вы используете.Но вы можете добиться этого, используя ssh2shell

. В качестве аргумента используется массив команд

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

Счастливое выполнение сценариев!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...