我的网络连接有时不太稳定,时不时会丢包或完全中断,这需要我重新启动网络连接或有时暂时拔掉一些设备。
这很可能不是 Ubuntu 的问题,而与硬件和环境的影响和干扰有关。
我希望我的连接开始中断时能立即收到通知(弹出窗口或指示小程序)。通过检查ping
本地路由器的响应来检测这一点,如果我能访问它,则一切正常。
您能否提供一个脚本,在连接处于活动状态时每秒 ping 一次我的路由器?它应该检查丢失的包裹,如果没有回来,它会提醒我。
答案1
怎么样 :
#!/bin/bash
dev='eth0'
if { nmcli dev status | grep "^"$dev".* connected" ;} &>/dev/null; then
while :; do
if ping -c 4 -i 0.5 gmail.com &>/dev/null; then
sleep 5
else
sleep 30
until ping -c 4 -i 0.5 gmail.com &>/dev/null; do
notify-send --urgency=critical "Network issue"
sleep 30
done
notify-send --urgency=critical "There was a Network issue, Its Ok now"
fi
done
fi
将您想要监控的接口保存为变量dev
。
此脚本将首先检查连接是否已启动,如果已启动,则它将以 0.5 秒的间隔向 192.168.1.1(假设这是您的路由器 IP 地址)发送 4 个 ICMP 回应请求数据包。如果任何数据包都有来自路由器的回应响应,则它将等待 5 秒钟,然后ping
再开始检查。
现在,如果所有 4 个数据包都无法从路由器获得响应,那么它将休眠 30 秒,这样我们就不会因突然的网络故障而不知所措。30 秒后,它将再次开始检查,如果这次成功,将显示ping
消息。There was a Network issue, Its Ok now
如果仍然不行,那么Network issue
就会显示消息,然后等待 30 秒并再次开始循环,直到收到任何成功的响应。