Bash

在不確定的時間段內檢查網際網路連接的健康狀況

  • March 22, 2021

可能會發生基於某些因素的斷開連接,並且由於我並不總是或不能總是使用乙太網(因為我使用的是 wifi),所以我想檢查我何時或至少有多少與 Internet 斷開連接,數量未定的時間。

我最想知道的是,因為我需要保持連接,並且知道何時斷開連接而不查看程序/作業停止/失敗的時刻會更有幫助。

所以我嘗試使用 ping 作為基礎:

#!/bin/sh
retryme() {
while ! "$@"
do
 echo "not_working -> $(date)"
done
}

retryme ping google.com

ping問題是,實際開始和實際 ping之間有 6-5 秒的輕微延遲……(儘管如果我使用標誌ping,它會減少大約 1 秒左右)-A

除此之外,它也只有在斷開連接時才真正顯示輸出(這是想要的效果),除非我這樣做:

#!/bin/sh -x
retryme() {
while ! "$@"
do
 echo "not_working -> $(date)"
done
}

pingme() {
ping -A google.com &>/dev/null
}

retryme pingme

但是當網際網路斷開連接並且不使用重試功能“重試”時它會掛起……

有一個更好的方法嗎?可能使用 ping 以外的其他東西(最好使用 POSIX 或 bash,和/或其他 linux 工具)

似乎這樣有效:

#!/bin/sh
retryme() {
while ! "$@"
do
 echo "not_working -> $(date)"
done
}

pingme() {
ping -A -W 1 8.8.8.8 &>/dev/null
}

retryme pingme

引用自:https://unix.stackexchange.com/questions/640423