Есть ли способ заставить Putty автоматически «закрывать окно при выходе» из командной строки?

Есть ли способ заставить Putty автоматически «закрывать окно при выходе» из командной строки?

Я пытаюсь создать машину без монитора, которая автоматически запускает Putty при запуске из скрипта и автоматически перезапускается в случае закрытия программы.

Хотя технически это работает нормально в большинстве ситуаций, если возникают проблемы с сетью, Putty просто зависнет и выдаст всплывающее сообщение о том, что соединение отключено.

Я видел опцию «закрыть окно при выходе» и знаю, что это то, что мне нужно, но я могу сделать это только из окна — я не нашел способа изменить эту настройку из командной строки.

Кто-нибудь знает, возможно ли это и что нужно настроить... или можно просто изменить настройки по умолчанию, так как это все, что будет запущено на этой машине?

решение1

Лучшим решением было бы создать пользовательский сеанс в PuTTY (с измененной настройкой "Закрыть окно при выходе") и загрузить этот сеанс через командную строку, но если у вас нет доступа к GUI, это нелегко. Однако я не знаю способа указать индивидуальные настройки через командную строку.

Однако, если вы можете редактировать реестр, вы можете создать сеанс, создав новый ключ в

HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions

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

Затем вы бы добавили

-load "session name"

в строку командной строки, где "имя сеанса" — это имя созданного вами ключа. После этого добавьте любые другие параметры командной строки (например, сервер, имя входа, пароль и т. д.), и все готово.

Я проверил это сам, но все же разумно сделать резервную копию реестра перед любым ручным редактированием.

В качестве альтернативы существуют форки PuTTY (например,Лоток для шпатлевки), которые обеспечивают автоматическое повторное подключение после прерывания, хотя я не могу ручаться за то, насколько хорошо они работают.

решение2

Если вы получили эту ошибку:

ошибка замазки

тогда вы можете написатьСкрипт AutoItкоторый ждет появления этого окна и подтверждает его:

$title = "PuTTY Fatal Error"
WinWaitActive( $title )
ControlClick($title,"", "Button1", "primary")
sleep(100)
WinClose("PuTTY (inactive)","")

Вы также можете скомпилировать скрипт в небольшой, автономный .exe файл. Поместите это в ваш пакетный файл перед запуском PuTTY.

решение3

Я знаю, что опоздал, но вы также можете использовать putty's plink.exe. Он принимает те же параметры, что и putty, но работает в строке, как и sshкоманда. Он также блокирует обработку и возвращает статус сбоя, что может быть очень полезно для сбойного соединения среди кучи команд.

Связанный контент