[英]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.