监控互联网连接稳定性的脚本

Edu*_*rdo 4 scripts internet monitoring router

我希望每次我的路由器失去互联网连接时都会报告它。

我想让我的 Ubuntu 系统每次当路由器的系统日志显示消息“以太网链接关闭”时给我发送一封电子邮件。

那可能吗?我相信我必须写一个脚本,对吗?

Phi*_*oud 6

您可以在 cron 工作中尝试类似的操作

#!/bin/bash
wget -q --tries=10 --timeout=20 --spider http://google.com
dt=$(date +%Y%m%d_%H%M%S)
if [[ $? -eq 0 ]]; then
    echo "$dt:Online"
else
    echo "$dt:Offline"
    mail -s "Internet connection lost on $(hostname) at $(date)" 
fi
Run Code Online (Sandbox Code Playgroud)

我个人有一个存储连接质量报告的脚本(取决于您可以从 apt-get install speedtest-cli

#!/bin/bash
#***************************************
# FOR CRONTAB
# */10 * * * * /location/of/my-internet-test.sh
#***************************************
LOG_FILE="/var/log/internet_test_$(hostname).csv"
mkdir -p $(dirname $LOG_FILE)
DT=$(date '+%Y-%m-%dT%H:%M:%S')
SPEED_TEST_RES=$(speedtest-cli --simple 2>/dev/null)
#set -o xtrace
DL=$(echo $SPEED_TEST_RES | awk '{print $5}')
UL=$(echo $SPEED_TEST_RES | awk '{print $8}')
PING=$(echo $SPEED_TEST_RES | awk '{print $2}')
#set -x
#echo "Ping: '$PING' DL:'${DL}' UL:'${UL}'"
[[ -z "$DL" ]] && { DL=0; UL=0; PING=0; }
echo "$DT,$PING,$DL,$UL" >> $LOG_FILE
Run Code Online (Sandbox Code Playgroud)

请注意,从 cron 定期调用脚本比执行循环更好

  • 感谢您的努力。我会试试这个脚本。我也做了一些研究并提出了这个:`#!/bin/bash while true do wget -q --tries=5 --timeout=20 -O - http://www.google.com > /dev /null 如果 [[ $? -eq 0 ]]; then : else echo $(date) "offline" | tee -a /place_to_save_log/offline.csv fi sleep 5 done` 它不会向我发送电子邮件,但会创建本地日志,这也非常有帮助。 (3认同)

小智 5

我很欣赏这是一个老问题,但我发现它正在寻找解决方案,所以我最终写了一个。它是一个 shell 脚本,用于检查互联网连接,并记录任何中断以及重新连接的链接速度。随意抓住它:

https://github.com/TristanBrotherton/netcheck