Выполнение (sudo) подкоманд с использованием Plink - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь управлять Linux-машиной из Windows PowerShell.Команды зависят от сбоя / прохождения команд ранее.Поэтому я должен собрать все команды вместе.Я пробовал несколько способов объединения команд, но в конце я получаю только выходные данные первой команды.

PS C:\Users\sams> plink -ssh -l username -pw root username@10.223.26.34 -t
      "sudo -i && cd /root/docker/storm-supervisor/ && ./stop-all.sh"

Фактический результат: получает только выходные данные первой команды.

Ожидаемый результат: получает выходные данные последней команды.

1 Ответ

0 голосов
/ 30 января 2019
sudo -i && cd /root/docker/storm-supervisor/ && ./stop-all.sh

Попробуйте свою команду в оболочке Linux.Это тоже не сработает.Он выполнит оболочку с повышенными правами и будет ждать ввода команд.Только после того, как вы покинете оболочку sudo, она будет выполнять другие команды (используя исходную учетную запись).

cd и ./stop-all.sh являются подкомандами sudo.Поэтому вы должны относиться к ним таким образом.

  • Лучший способ - предоставить команды в командной строке sudo:

    sudo "cd /root/docker/storm-supervisor/ && ./stop-all.sh"
    

    Но для этого, вероятно, потребуются измененияфайл sudoers.Хотя это правильный путь.

  • Или вам нужно будет подать команды на sudo ввод:

    echo "cd /root/docker/storm-supervisor/ && ./stop-all.sh && exit" | sudo
    
...