1

Я подключаюсь к серверу через plink следующим образом:

plink -ssh -l username -pw password example.host.com -m C:\Putty\input.txt > C:\Putty\output.txt

input.txt содержит

whoami
su - newsuser
whoami

output.txt содержит

username
username

СУ не работает через пллинк.

Если попробовать ту же команду в putty, то она работает нормально и получает вывод "newsuser".

Linux PuTTY - автоматизировать su для решения проблемы, связанной с паролем

Я попробовал вышеуказанное решение, но оно не работает для меня.

Спасибо

1 ответ1

2

Во-первых, это не работает так, как вы думаете.

Команды в скрипте выполняются последовательно. Команда su (если бы она была успешной) выполняла интерактивную сессию оболочки и ожидала ввода данных пользователем (команды). Только когда su существует, запускается второй whoami (показывает username).


Во всяком случае, ваше su не работает на самом деле.

Во-первых, su точно выводит сообщение об ошибке. Что это такое? Вы фиксируете только стандартный вывод в ваших командах. Захватить вывод ошибок тоже (2>&1). Скорее всего, это не сработает, поскольку su может потребоваться интерактивный терминал, в то время как Plink с ключом -m по умолчанию использует неинтерактивный терминал. Добавление ключа -t помогает в этом случае.


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .