Plink не переключает пользователя с помощью команды su

1000
Gopi Krishnan

Я подключаюсь к серверу через 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
Martin Prikryl

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

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


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

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


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

Если я использую -t, то его показ в виде input.txt отсутствует. я пытался с полным путем \, \\, но все еще та же ошибка Gopi Krishnan 6 лет назад 0
Похоже, вы использовали `-t` вместо` -m`. Вы должны использовать оба. Прочитайте документацию! Martin Prikryl 6 лет назад 0

Похожие вопросы