一段实时汇报当前网络状态的shell脚本。

实验室的网络经常瘫痪,这点让人非常纠结。

为了检查网络是否正常,需要经常敲 ping 命令,久而久之就感觉很 stupid 。

终于我忍不住了,写了一个工具定期帮我测试网络,一旦网络状态发生改变,就弹窗提醒。

截图:

1 网络连接失败时的提醒

网络连接失败时的提醒
网络连接失败时的提醒

2 网络恢复正常时的提醒:

网络恢复正常时
网络恢复正常时

主要的思想是发送四次 ping 命令到 Google 的 DNS 服务器 8.8.8.8 ,然后检测是否有返回带 ttl 字段的消息,如果有,则可以判定网络连接正常;如果经过四次 ping 操作都无法接收到带 ttl 字段的消息,则可以判定网络连接失败。为了让网络状态反馈的更及时,我设定每五秒钟就执行一次 ping 操作。

弹窗的命令用的是 notify-send ,依赖 libnotify

图标用的是 KDE 自带的 Oxygen 图标,也可以根据你的喜好进行更换。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash

net_stat=1

while true
do
PINGRET=$( ping 8.8.8.8 -c 4 | grep "ttl=" )

[ -z "$PINGRET" ] &&
{
if [ $net_stat -eq 1 ]; then
notify-send -i /usr/share/icons/oxygen/48x48/actions/dialog-cancel.png "Warning" "Bad connection"
net_stat=0
fi
echo Bad connection
}||
{
if [ $net_stat -eq 0 ]; then
notify-send -i /usr/share/icons/oxygen/48x48/actions/dialog-ok-apply.png "Congrats" "Network connected"
net_stat=1
fi
echo Network connected
}
sleep 5
done

下载该脚本

Comments