Kok*_*zzu 11 networking monitoring audio
有什么软件可以在 5 分钟没有任何互联网连接时播放警报(PC 扬声器)?
我的交换机/路由器似乎每隔几天就会断开连接,我想在它发生时重置它。
PC -- TP-Link switch/router -- FO
192.168.x.1 -- 192.168.x.2 / x.y.z.a -- a.b.c.d
Run Code Online (Sandbox Code Playgroud)
您可以使用此脚本的修改版本来执行您想要的操作:
#!/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
Run Code Online (Sandbox Code Playgroud)
打开调试后,您就可以看到脚本在做什么。
set -x
Run Code Online (Sandbox Code Playgroud)
使用有效的主机名运行以演示“连接已启动”状态。
$ ./watcher.bash
+ downTime=0
++ date +%s
+ lastAccessTime=1402276955
+ '[' true ']'
Run Code Online (Sandbox Code Playgroud)
以上初始化了几个变量并确定了我们最后一次通过循环的时间$lastAccessTime
。我们现在尝试ping Google。
+ ping -c1 google.com
+ downTime=0
++ date +%s
+ lastAccessTime=1402276955
Run Code Online (Sandbox Code Playgroud)
我们现在计算任何停机时间,$downTime
如果 ping 失败,否则,我们重置$downTime
为零,并重新计算$lastAccessTime
。
+ sleep 15
Run Code Online (Sandbox Code Playgroud)
现在我们等待 15 秒。
+ '[' 0 -ge 300 ']'
Run Code Online (Sandbox Code Playgroud)
现在我们检查是否已经停机 > 5 分钟(300 秒)。然后我们重复遍历while
循环。
+ '[' true ']'
+ ping -c1 google.com
+ downTime=0
++ date +%s
+ lastAccessTime=1402276970
+ sleep 15
....
Run Code Online (Sandbox Code Playgroud)
只要我们启动,除了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
...
Run Code Online (Sandbox Code Playgroud)
请注意,$downTime
到目前为止,这等于 15 秒。如果我们再等一会儿,我们会看到:
+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=300
+ sleep 15
Run Code Online (Sandbox Code Playgroud)
我们已经累积了 300 秒的停机时间。所以现在当我们检查时,我们打印消息,alert
。
+ '[' 300 -ge 300 ']'
+ echo alert
alert
+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=315
+ sleep 15
Run Code Online (Sandbox Code Playgroud)
这种状态将一直持续到连接恢复并ping
再次成功。
这很容易。您可以使用多种工具来执行此操作。当连接断开时,我会使用类似sox
or 的东西mplayer
来播放音频文件,例如带有您希望每 15 秒听到一次的适当声音的.mp3
或.wav
文件。
mplayer someaudio.wav
Run Code Online (Sandbox Code Playgroud)
只需alert
用这一行替换上面的消息,即可获得连接中断的音频反馈。
如果您ping
以上述方式使用,您可能会遇到缓慢的延迟时间,ping
当连接断开时,它实际上需要10-20 秒才能失败。请参阅我对此 U&L 问答的回答,标题为:如何重定向任何命令的输出?例如,使用命令行工具fing
代替。这个工具会比传统的更快失败ping
。
归档时间: |
|
查看次数: |
3490 次 |
最近记录: |