有沒有辦法讓膩子從命令列自動「退出時關閉視窗」?

有沒有辦法讓膩子從命令列自動「退出時關閉視窗」?

我正在嘗試製作一台無頭機器,它可以在啟動時自動從腳本運行膩子,並在程式關閉時自動重新啟動。

雖然這在技術上在大多數情況下運作得很好,但如果出現網路問題,putty 只會掛起並彈出一個訊息,表示已斷開連接。

我看到了“退出時關閉視窗”選項,我知道這就是我所需要的,但是,我只能在視窗中執行此操作 - 我還沒有找到從命令列更改此設定的方法。

有誰知道這是否可能以及要設定什麼...或者是否可以更改預設值,因為這就是這台機器上運行的所有內容?

答案1

最好的解決方案是在 PuTTY 中建立自訂會話(更改「退出時關閉視窗」設定)並透過命令列載入該會話,但如果您無法存取 GUI,這並不容易。但是,我不知道有什麼方法可以透過命令列指定單獨的設定。

但是,如果您可以編輯註冊表,則可以透過在下列位置建立新金鑰來建立會話:

HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions

然後您可以在其中新增與 GUI 中的會話設定相對應的值。因此,如果您希望視窗在退出時始終關閉,您可以新增一個名為 CloseOnExit 的 DWORD 值,其中包含值 2。

然後你會添加

-load "session name"

到您的命令列字串,其中「會話名稱」是您建立的金鑰的名稱。之後輸入任何其他命令列選項(例如伺服器、登入名稱、密碼等)即可完成設定。

我自己對此進行了測試,但在進行任何手動編輯之前備份註冊表仍然是謹慎的做法。

或者,還有 PuTTY 的分支(例如膩子托盤)具有中斷後自動重新連接的功能,但我不能保證它們的工作效果如何。

答案2

當您收到此錯誤:

膩子錯誤

那你可以寫一個自動腳本等待此視窗出現並確認:

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

您也可以將腳本編譯為小型的獨立 .exe 檔案。在啟動 PuTTY 之前將其放入批次檔中。

答案3

我知道我遲到了,但你也可以使用 putty 的plink.exe.它採用與 putty 相同的參數,但運行方式與ssh命令非常相似。它還會阻止處理並返回失敗狀態,這對於一堆命令中的失敗連接非常有用。

相關內容