Contents

随身wifi的断网自动重启脚本

编写脚本

脚本内容net_check.sh

#!/bin/bash

# 定义一个函数,用于检测网络连接
check_network() {
    # 使用 ping 命令检测网络连接
    # -c 1 表示发送 1 个 ICMP 数据包
    # -W 5 表示超时时间为 5 秒
    ping -c 1 -W 5 8.8.8.8 &> /dev/null

    # 检查 ping 命令的返回值
    if [ $? -eq 0 ]; then
        echo "网络正常,无需重启。"
        return 0
    else
        echo "网络已断开,准备重启设备。"
        return 1
    fi
}

# 主循环
while true; do
    # 检测网络连接
    if ! check_network; then
        # 如果网络断开,执行重启操作
        echo "正在重启设备..."
        sudo reboot
    fi

    # 每隔一定时间检查一次(例如每 30 秒检查一次)
    sleep 30
done

保存在根目录即可。

赋予脚本执行权限:

chmod +x net_check.sh

通过以下命令测试执行:

/net_check.sh

如果希望脚本在后台运行,可以使用 nohupscreen 工具:

nohup sudo ./net_check.sh &

进阶:使用 systemd 服务

如果希望让脚本在系统启动时自动运行,可以将其配置为一个 systemd 服务:

创建服务文件: 创建一个服务文件 /etc/systemd/system/net_check.service,内容如下:

[Unit]
Description=Auto Reboot on Network Failure

[Service]
ExecStart=/net_check.sh
Restart=always

[Install]
WantedBy=multi-user.target

启用服务

sudo systemctl daemon-reload
sudo systemctl enable net_check.service
sudo systemctl start net_check.service

这样,脚本会在系统启动时自动运行,并在检测到网络断开时重启设备。