延遲的 SSH 連線、身份驗證和命令

延遲的 SSH 連線、身份驗證和命令

我的家用電腦是執行 OS X 10.8.5 的 Mac,通常接受 Internet 上的 SSH 連線(我已轉送連接埠),但現在處於睡眠狀態。當我出門在外時,它有時可能會因各種原因醒來。我想向它發送一些 SSH 命令,但無法坐下來繼續嘗試,直到它醒來。

是否有一種簡單的非 AppleScript 方法可以延遲 SSH 連線、密碼驗證和命令輸入,直到主機回應為止?我在外使用 Mac,但我想知道在任何基於 Unix 的作業系統上執行此操作的方法。通常,嘗試連接一分鐘左右後就會超時。

我知道在大多數終端模擬器中,您可以在阻塞進程運行時鍵入命令,一旦這些進程完成,它們就會執行。一個例子是在while is still runninggit push foo之後立即輸入;一旦完成提交,git 就會推送。我認為可能有一些技巧可以透過終端模擬器使用 ssh 執行類似的操作。git commit -a -m "foo"git commit -a -m "foo"

答案1

您可以使用 ping 檢查您的電腦是否已啟動,然後啟動一個或多個 ssh 命令。請注意,您需要在主機上設定基於憑證的身份驗證。這是一個基於 GNU/Linux 的 BASH 的小腳本,但我想您可以將其轉換為 Mac OS X 正在使用的任何腳本。

#/bin/bash   
hostup=0
while [ $hostup -ne 1 ]; do
    ping -c 4 <hostname or IP>
    if [ $? -eq  0 ]; then
        ssh username@hostname <command to execute>
        hostup=1;
done

每條 SSH 線路只有一個命令,如果您想使用參數,則必須引用您的命令。如果您要一直執行相同的命令,也許您的家用電腦上的腳本是合適的。

相關內容