Выполнить команду sudo на linux из plink.exe [windows]

Если я выполняю команду plink

plink [email protected] sudo nano/etc/hosts

После ввода пароля при появлении запроса я получаю

sudo: нет tty присутствует и не указана запрошенная программа

Извините, повторите попытку.

sudo: нет tty присутствует и не указана запрошенная программа

Извините, повторите попытку.

sudo: нет tty присутствует и не указана запрошенная программа

Извините, повторите попытку.

sudo: 3 неправильных попытки пароля

Как выполнить команду sudo из plink? Или есть альтернативы?

Ответ 1

Я знаю, что вопрос старый, но это может помочь

вы можете выполнить plink (инструменты замазки)

plink -v -ssh -m "path/to/commands.txt" -l usertologin -pw PASSWORDSERVER

Commands.txt:

echo -e "PASSWORD\n" | sudo -S cat /etc/passwd

sudo -S должен получить пароль от stdin и с echo -e "password\n" - передать пароль (и\n - нажать intro -new line-)

так же, как вы можете выполнить команду passwd:

> echo -e "OLDPASSWORD\nNEWPASSWORD\nNEWPASSWORD" | passwd

Ответ 2

Почему вы используете plink здесь? В общем, вы должны использовать plink для вызова неинтерактивного script на удаленном хосте. Если вы хотите делать интерактивные материалы (например, редактировать файл), просто ssh на сервере (либо из вашей оболочки, используя клиент ssh в Linux, либо запустив putty на Windows), а затем отредактируйте файл.

Более подробную информацию о plink и некоторых примерах можно найти здесь: http://the.earth.li/~sgtatham/putty/0.53b/htmldoc/Chapter7.html

Ответ 3

Почему Plink? вместо этого используйте SSH. Также SSH понадобится -t для команд sudo. На странице man ssh:

 -t      Force pseudo-tty allocation.  This can be used to execute arbitrary screen-based programs on a remote
         machine, which can be very useful, e.g. when implementing menu services.  Multiple -t options force tty
         allocation, even if ssh has no local tty.

Ответ 4

Мне нужно было сделать несколько папок и установить perms. Эти блоки работали для меня в PowerShell для автоматизации. Кто бы там ни предлагал просто использовать SSH, надеюсь, понял, что в настоящее время это не правильное решение. Сокращение ручного процесса должно быть целью каждого.

$null = iex "cmd /c $plinkpath -ssh -l $linuser -pw $linpass $computername `"echo $linpass | sudo -S mkdir $puppetfolder`"" *>&1

$null = iex "cmd /c $plinkpath -ssh -l $linuser -pw $linpass $computername `"echo $linpass | sudo -S chmod o+wx $puppetfolder`"" *>&1