網際網路連接中斷警報
有什麼軟體可以在 5 分鐘內沒有任何網際網路連接時播放警報(PC 揚聲器)?
我的交換機/路由器似乎每隔幾天就會斷開連接,我想在它發生時重置它。
PC -- TP-Link switch/router -- FO 192.168.x.1 -- 192.168.x.2 / x.y.z.a -- a.b.c.d
您可以使用此腳本的修改版本來執行您想要的操作:
#!/bin/bash downTime=0 lastAccessTime=$(date +"%s") while [ true ]; do if ! ping -c1 google.com >& /dev/null; then downTime=$(( $(date +"%s") - $lastAccessTime )) else downTime=0 lastAccessTime=$(date +"%s") fi sleep 15 if [ $downTime -ge 300 ]; then echo "alert" fi done
我們是“連接”的例子
打開調試後,您可以看到腳本在做什麼。
set -x
使用有效的主機名執行以展示“連接已啟動”狀態。
$ ./watcher.bash + downTime=0 ++ date +%s + lastAccessTime=1402276955 + '[' true ']'
上面初始化了幾個變數,並確定了我們最後一次通過循環的時間
$lastAccessTime
。我們現在嘗試 ping Google。+ ping -c1 google.com + downTime=0 ++ date +%s + lastAccessTime=1402276955
如果 ping 失敗,我們現在計算任何停機時間,
$downTime
否則,我們重置$downTime
為零,並重新計算$lastAccessTime
。+ sleep 15
現在我們等待 15 秒。
+ '[' 0 -ge 300 ']'
現在我們檢查我們是否已經停機超過 5 分鐘(300 秒)。然後我們重複
while
循環。+ '[' true ']' + ping -c1 google.com + downTime=0 ++ date +%s + lastAccessTime=1402276970 + sleep 15 ....
只要我們起床,除了
ping
每 15 秒檢查一次命令外,什麼都不會發生。我們是“斷開連接”範例
現在要模擬“連接斷開”狀態,我們將換掉我們正在 ping 的主機名並使用一個假的,
google1234567890.com
. 在啟用調試的情況下重複執行我們的腳本,我們現在可以看到一些實際的停機時間正在計算中。$ ./watcher.bash + downTime=0 ++ date +%s + lastAccessTime=1402277506 + '[' true ']' + ping -c1 google1234567890.com ++ date +%s + downTime=0 + sleep 15 + '[' 0 -ge 300 ']' + '[' true ']' + ping -c1 google1234567890.com ++ date +%s + downTime=15 + sleep 15 ...
請注意,
$downTime
到目前為止,它等於 15 秒。如果我們再等一會兒,我們會看到:+ '[' true ']' + ping -c1 google1234567890.com ++ date +%s + downTime=300 + sleep 15
我們已經累積了 300 秒的停機時間。所以現在當我們檢查時,我們列印消息,
alert
.+ '[' 300 -ge 300 ']' + echo alert alert + '[' true ']' + ping -c1 google1234567890.com ++ date +%s + downTime=315 + sleep 15
這種狀態會一直持續到連接恢復並且
ping
再次成功。那麼聲音呢?
這很容易。您可以使用各種工具來執行此操作。我會使用類似
sox
or的東西mplayer
來播放音頻文件,例如.mp3
or.wav
文件,您希望每 15 秒聽到一次合適的聲音,而連接斷開。mplayer someaudio.wav
只需
alert
用此行替換上面的消息即可獲得連接已斷開的音頻回饋。ping 超時問題
如果您
ping
以上述方式使用,您可能會遇到緩慢的延遲時間,ping
當連接斷開時,它實際上需要 10-20 秒才能失敗。請參閱我對此 U&L Q&A 的回答,標題為:如何重定向任何命令的輸出?例如,fing
改為使用命令行工具。這個工具會比傳統的更快失敗ping
。