Используя Plink, как автоматически вводить пароль в Ubuntu SSH? - PullRequest
0 голосов
/ 19 сентября 2018

В настоящее время я настраиваю пакетный файл ssh с компьютера с Windows на компьютер с Ubuntu и запускаю серию команд.Я использую plink и использую аргумент -m для передачи файла .txt со списком команд.

Код пакетного файла, который проходит через cmd:

set PATH=c:\path\to\plink.exe
plink.exe -ssh -t user@ipaddress -pw <psw> -m c:\path\to\textFile\commands.txt

Код commands.txt:

sudo -s      #access the root login
<root psw>   #enter the password for the root login
command-1    #issue a command in linux as root
command-2    #issue a command in linux as root
command-3    #issue a command in linux as root

Проблема, с которой я сталкиваюсь, заключается в том, чтоКогда я запускаю этот пакетный файл, вывод в командной строке все равно предлагает пользователю ввести пароль вручную.Есть ли способ ввода пароля из следующей строки файла commands.txt?Или этот процесс требует чего-то еще?

1 Ответ

0 голосов
/ 20 сентября 2018

Как говорит даже ваш вопрос, файл commands.txt, указанный переключателем -m, должен содержать команды . пароль не является командой .

Более того, команды в файле выполняются одна за другой.sudo (если бы он работал) выполнял бы интерактивную сессию оболочки и ждал пользовательского ввода (команд).Только после выхода из режима sudo выполняются следующие команды (command-1 и т. Д.).


Автоматический ввод пароля для sudo, как правило, плохая идея.Если вам нужно выполнить некоторые команды, требующие прав суперпользователя, лучшим решением будет связать выделенный закрытый ключ с командами в файле sudoers.А затем используйте sudo и закрытый ключ в Plink.


В любом случае, для автоматизации ввода (в данном случае пароля) команды вам необходимо использовать перенаправление ввода.То же самое верно для команд, которые должны быть выполнены внутри (а не после) sudo.

Как:

(
    echo passwod
    echo command-1
    echo command-2
) | plink.exe -ssh -t user@ipaddress -pw <psw> sudo -s

Поскольку сейчас есть только одна настоящая команда верхнего уровня - sudo,Я указываю это непосредственно в командной строке Plink, вместо использования ключа -m.Функционально он идентичен.

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