gpt4 book ai didi

linux - 如何使用 Bash 脚本发送 Internet 连接警报?

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:17 30 4
gpt4 key购买 nike

我的互联网连接不稳定,所以我决定制作一个 bash 脚本,每当互联网恢复时它就会提醒我。这是脚本:

#!/bin/bash
# set -x


while [ 1 ];do
STATUS_CURRENT=$(ping -q -w 1 -c 1 google.com > /dev/null && echo connected || echo disconnected)
if [[ $STATUS_CURRENT == "connected" && $STATUS_LAST != "connected" ]];then
aplay /home/user/bin/online.wav
notify-send "We've connected"

elif [[ $STATUS_CURRENT == "disconnected" && $STATUS_LAST == "connected" ]];then
aplay /home/user/bin/offline.wav
notify-send "Disconnected now"
fi

STATUS_LAST=$STATUS_CURRENT
sleep 2
done

我已将其添加到 /etc/rc.local 中,以使其在启动时执行。该脚本的问题是有时会失败。即使有互联网连接,脚本也会发送通知,表示已断开连接(紧接着是“已连接”消息)。

如何避免这个问题?这是否与 ping 失败缓慢有关?脚本如何改进?

最佳答案

使用“netcat”,它对我来说非常稳定

#!/bin/bash

status=0

do_on=("/home/user/bin/online.wav"
"We've connected")

do_off=("/home/user/bin/offline.wav"
"Disconnected now")

while [ 1 ] ;do
nc -zw 2 google.de 80
ret="$?"

if [ "$ret" = 0 -a "$status" = 0 ] ;then
aplay ${do_on[0]}
notify-send ${do_on[1]}
status=1

elif [ "$ret" -ne 0 -a "$status" = 1 ] ;then
aplay ${do_off[0]}
notify-send ${do_off[1]}
status=0 ;fi

sleep 2 ;done

您应该提前测试您的 DNS 服务器

为卡里姆干杯

关于linux - 如何使用 Bash 脚本发送 Internet 连接警报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31135005/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com