如何记录互联网连接中断

Mat*_*teo 10 ip monitoring ping

一旦我的树莓派连接到互联网,我就需要执行一个脚本。但是我想知道是否有比每分钟左右 ping Google 更好的方法。

我的问题是我的 Internet 连接在白天断开了 1-2 次,因此我需要一种方法来记录此类事件。
这只是白天的 ADSL 掉线,我一直在寻找某种方式来记录它何时发生,即使我没有注意到。我想我会按照建议设置一个脚本。

Ija*_*han 10

您可以检查:

cat /sys/class/net/wlan0/carrier
Run Code Online (Sandbox Code Playgroud)

其中 wlan0 是我的互联网接口。您可以使用您正在使用的任何接口,例如 eth0 、 eth1 、 wlan0 进行互联网连接。如果该命令的输出为 1,则您已连接。否则不会。所以你可以写这样的脚本:

#!/bin/bash
# Test for network conection
for interface in $(ls /sys/class/net/ | grep -v lo);
do
if [[ $(cat /sys/class/net/$interface/carrier) = 1 ]]; then ; echo "online"; fi
done
Run Code Online (Sandbox Code Playgroud)

您也可以使用以下命令:

#hwdetect --show-net
Run Code Online (Sandbox Code Playgroud)

这个脚本也很好用:

#!/bin/bash

WGET="/usr/bin/wget"

$WGET -q --tries=20 --timeout=10 http://www.google.com -O   /tmp/google.idx &> /dev/null
if [ ! -s /tmp/google.idx ]
then
  echo "Not Connected..!"
else
  echo "Connected..!"
fi
Run Code Online (Sandbox Code Playgroud)


msw*_*msw 7

询问您的系统是否认为它有连接是“我的 ISP 是否丢弃东西?”的代理措施。根据定义,代理措施是感兴趣系统的简化模型,不保留信息。该问题只能通过实际获取您感兴趣的信息来回答。

ping实际上是一个糟糕的测试选择,因为它是一个经常得到特殊处理的 ICMP 协议。例如,如果您对 HTTP 连接感兴趣,例如

curl --head http://www.example.com
Run Code Online (Sandbox Code Playgroud)

将显示您是否可以实际获取页面。如果您进行投票,请保持礼貌并在两者之间至少间隔 60 秒的睡眠时间。不到一分钟的 ISP 中断可被视为“非中断”。