7

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

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

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

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

3 ответа3

5

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

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

HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions

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

Вы бы тогда добавили

-load "session name"

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

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

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

1

Когда вы получите эту ошибку:

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

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

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

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

0

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

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