Автоматически предоставлять пароль пользователя root для su, выполняемого с помощью Plink из пакетного файла.

Мне трудно получить ввод из строки пароля root для автоматического подключения, как это делает пароль ssh. Пока у меня так, то вылетает. Я пытаюсь заставить командный файл ввести ip, пароль ssh, затем предоставить доступ su, а затем автоматически ввести корневой проход. Что-нибудь поможет спасибо!

color b
cls
echo What is the IP for the unit?:
set /p IP= :

echo What is the SSH Password for this unit?:
set /p Passw0rd= :

echo What is the Root Password for this unit?:
set /p R0ot= :

plink.exe -t -ssh user@%IP% -pw %Passw0rd% -m commands.txt 

exit/b

Что в command.txt:

su

person drod2030    schedule 19.03.2021    source источник


Ответы (1)


Сначала предупредим: автоматизировать su, особенно su с помощью пароля, обычно плохая идея: SSH.

su разработан, чтобы противостоять автоматизации.


В любом случае, su ожидает ввода пароля. plink перенаправляет свой ввод на вход удаленной команды.

Поэтому все, что вам нужно сделать, это передать вашу переменную в качестве входных данных для plink (см. Как автоматически передавать пользовательский ввод с помощью plink.exe< /а>):

echo %R0ot%| plink -t -ssh user@%IP% -pw %Passw0rd% -m command.txt

Вы также можете выполнить su непосредственно в командной строке plink, избегая необходимости в command.txt:

echo %R0ot%| plink -t -ssh user@%IP% -pw %Passw0rd% su

Требуется -t su обычно отказывается работать без эмуляции терминала. С другой стороны, -t может доставить вам неприятности. Например, с -t вам может потребоваться передать пароль plink только в тот момент, когда su запрашивает его. Поэтому вам может понадобиться инструмент expect-linke. Или используйте хакерское решение, например задержку ввода, см. Подождите между отправкой логина и команд на последовательный порт с помощью Plink.


Другой связанный вопрос, показывающий немного разные подходы:
Выполнить команду sudo в Linux из plink.exe в Windows

person Martin Prikryl    schedule 24.03.2021