簡體   English   中英

如果在中間中斷,ssh會掛起

[英]ssh hangs if interrupted in the middle

以下代碼假定如果ssh能夠連接到遠程計算機,則重復打印“已連接”,否則將打印“未連接”。

#!/bin/bash
while [ "1" ]
do
    ifconfig usb0 &>/dev/null
    if [ "$(echo $?)" == "0" ]
    then
        sshpass -p passwd ssh -o ConnectTimeout=5 duser@10.1.1.3 sudo echo "connected"
    else
        echo "not-connected"
    fi
    sleep 0.2
done

遠程計算機通過usb0接口連接。 我通過頻繁拔插USB接口來測試此腳本。 問題有時是當我拔下USB接口時,代碼卡在ssh上,並且無法重復打印。 我想如果ssh在執行過程中被打斷,就會卡住。 我該如何克服呢? 有人可以幫忙嗎?

最明顯的是它根本沒有懸掛。 但是,您連接打印的方式似乎是錯誤的。

這看起來很可疑

sshpass -p passwd ssh -o ConnectTimeout=5 duser@10.1.1.3 sudo grep "connected"

您要嘗試grep嗎?

通常,如果您需要grep某些應用程序的輸出,則需要通過管道進行操作,例如

ls | grep "connected"

由於您使用的是bash ,因此這是一種更好的測試方法:

2>/dev/null >/dev/tcp/<ip_addr>/<port> && echo pass || echo fail

有關更多詳細信息,請參見有關重定向的Bash文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM