Я пытаюсь создать машину без монитора, которая автоматически запускает 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
команда. Он также блокирует обработку и возвращает статус сбоя, что может быть очень полезно для сбойного соединения среди кучи команд.