3

Я создал файл .bat который автоматически получает доступ к серверу SSH (Jump Server). Теперь у меня есть пара команд, которые я хотел бы нажать в этом окне.

Для бывшего (Чтобы получить root права)

usrun -u root rush

С помощью этой команды он попросит меня ввести пароль.

Итак, как я могу достичь этого полностью через файл .bat ?

1 ответ1

4

Для автоматического выполнения команд с помощью PuTTY используйте ключ -m для передачи текстового файла с командами для запуска, например:

putty.exe -ssh user@host  -m commands.txt

Где команда commands.txt будет содержать

usrun -u root rush

Но это не поможет вам с паролем, так как это ввод команды usrun , а не сама по себе команда, поэтому -m здесь бесполезен. Я не знаю usrun , поэтому я не могу сказать, есть ли у него способ "аутентифицировать" какой-либо другой метод вместо "ввода" пароля. В общем, всякий раз, когда вы пытаетесь автоматизировать ввод пароля, вы делаете что-то неправильно. Это риск для безопасности. Всегда проверяйте, есть ли лучший (= более безопасный) способ.


Другая проблема - дальнейшие команды. Если все команды, которые вы хотите выполнить, должны выполняться в одной и той же среде / оболочке, вы можете поместить их в файл commands.txt построчно.

command1
command2

Обратите внимание, что не все SSH-серверы поддерживают несколько линий. Большинство делает, хотя. Если нет, вы всегда можете использовать свой сервер / оболочку для выполнения нескольких команд в одной строке, например:

command1 && command2

Но если дальнейшие команды на самом деле являются подкомандами первой команды, как в случае с такими командами, как su , sh , bash , ssh , ftp и т.д. (И может быть в случае с usrun), дальнейшие команды фактически являются входными данными для первые, не автономные команды среды / оболочки верхнего уровня. На самом деле это та же проблема, что и проблема ввода пароля выше.

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


Сказав это, вы можете использовать Plink (инструмент подключения командной строки PuTTY ) вместо PuTTY. Это инструмент из пакета PuTTY, который работает как PuTTY, но это консольное, а не графическое приложение. В качестве такового он может использовать перенаправление ввода / вывода. Таким образом, вы можете перенаправить даже пароль или подкоманды основной команды из файла, как если бы вы набрали их на консоли. И в любом случае Plink - это инструмент для автоматизации задач, а не PuTTY.

echo usrun -u root rush>input.txt
echo password>input.txt
echo command_for_usrun>input.txt
plink -ssh user@host < input.txt

В качестве альтернативы используйте KiTTY с -cmd который делает то, что вы хотите. KiTTY - это приложение с графическим интерфейсом (это клон PuTTY). Его ключ -cmd основном имитирует типизацию, поэтому у него нет проблем с вводом (пароль и подкоманды) для команд. Но я нашел это довольно ненадежным. Я не очень рекомендую это. Но вы можете найти это достаточно для вашей задачи.

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