스크립트에서 시작할 때 퍼티를 자동으로 실행하고 프로그램이 닫히면 자동으로 다시 시작하는 헤드리스 머신을 만들려고 합니다.
기술적으로는 대부분의 상황에서 잘 작동하지만, 네트워크 문제가 있는 경우 퍼티는 연결이 끊어졌다는 팝업과 함께 중단됩니다.
"종료 시 창 닫기" 옵션을 보았고 이것이 필요한 것임을 알고 있지만 이 작업은 창에서만 수행할 수 있습니다. 명령줄에서 이 설정을 변경하는 방법을 찾지 못했습니다.
이것이 가능한지, 무엇을 설정해야 하는지 아는 사람이 있습니까? 아니면 이것이 이 컴퓨터에서 실행될 전부이므로 기본값을 변경하는 것이 가능한지 아는 사람이 있습니까?
답변1
가장 좋은 해결책은 PuTTY에서 사용자 정의 세션을 생성하고("종료 시 창 닫기" 설정이 변경됨) 명령줄을 통해 해당 세션을 로드하는 것이지만, GUI에 액세스할 수 없는 경우 쉽지 않습니다. 그러나 명령줄을 통해 개별 설정을 지정하는 방법은 없습니다.
그러나 레지스트리를 편집할 수 있는 경우 다음에서 새 키를 생성하여 세션을 생성할 수 있습니다.
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions
그런 다음 GUI의 세션 설정에 해당하는 값을 추가할 수 있습니다. 따라서 종료 시 창이 항상 닫히도록 하려면 값 2가 포함된 CloseOnExit라는 DWORD 값을 추가해야 합니다. 지정되지 않은 다른 모든 항목은 기본값으로 유지됩니다.
그런 다음 추가합니다.
-load "session name"
여기서 "세션 이름"은 생성한 키의 이름입니다. 그 뒤에 다른 명령줄 옵션(예: 서버, 로그인 이름, 비밀번호 등)을 입력하면 모든 설정이 완료됩니다.
제가 직접 테스트해 보았지만 수동으로 편집하기 전에 레지스트리를 백업하는 것이 여전히 현명합니다.
또는 PuTTY 포크(예:퍼티 트레이) 중단 후 자동으로 다시 연결되는 기능이 있지만 얼마나 잘 작동하는지 보장할 수는 없습니다.
답변2
이 오류가 발생하는 경우:
그럼 당신은 쓸 수 있습니다AutoIt 스크립트이 창이 나타날 때까지 기다리고 이를 확인합니다.
$title = "PuTTY Fatal Error"
WinWaitActive( $title )
ControlClick($title,"", "Button1", "primary")
sleep(100)
WinClose("PuTTY (inactive)","")
스크립트를 작은 독립 실행형 .exe 파일로 컴파일할 수도 있습니다. PuTTY를 시작하기 전에 이를 배치 파일에 넣으십시오.
답변3
나는 게임에 늦었다는 것을 알고 있지만 퍼티를 사용할 수도 있습니다 plink.exe
. putty와 동일한 매개변수를 사용하지만 명령과 매우 유사하게 인라인으로 실행됩니다 ssh
. 또한 처리를 차단하고 실패 상태를 반환합니다. 이는 여러 명령 중에 실패한 연결에 매우 유용할 수 있습니다.