使用脚本 让每隔3分钟 分别ping 三个网络地址,如果3次都ping不通,就1分钟后关机(可以设置2个内网地址,1个外网地址,最好包括一个内网路由器网关地址)
使用文本编辑器创建一个新的 Bash 脚本文件,比如 ping_check.sh:
在脚本中写入以下内容:
#!/bin/bash
# 定义要 ping 的 IP 地址
IP_ADDRESSES=("192.168.1.2" "192.168.1.3" "192.168.1.4")
FAILURE_COUNT=0 # 失败计数
while true; do
for IP in "${IP_ADDRESSES[@]}"; do
# Ping 该 IP 地址 1 次
if ping -c 1 $IP > /dev/null 2>&1; then
echo "Ping $IP: 成功"
FAILURE_COUNT=0 # 如果成功,将失败计数清零
else
echo "Ping $IP: 失败"
FAILURE_COUNT=$((FAILURE_COUNT + 1)) # 如果失败,增加失败计数
fi
done
# 如果连续 9 次都失败
if [ $FAILURE_COUNT -ge 9 ]; then
echo "9分钟内 分3次 每隔3分钟 分别ping 3个地址都失败,可能已经停电,1 分钟后关机"
sleep 60 # 等待 1 分钟
shutdown now # 关机
fi
# 每隔 3 分钟检查一次
sleep 180
done
在当前目录终端中运行以下命令,给予脚本执行权限:
chmod +x ping_check.sh
说明
ping -c 1 $IP:每次只发送一个 ping 包。
sleep 180:每次循环之间等待 3 分钟。
shutdown now:在检测到连续失败 3 次后,等待 1 分钟后关机。
注意
权限:确保你有足够的权限执行关机命令。可以使用 sudo 运行脚本。
帮助信息:你可以随时查看脚本的输出,以了解当前的 ping 状态。
脚本终止:如果需要停止脚本的执行,可以找到它的进程并终止(例如使用 kill 命令)。
通过以上步骤,你就可以在 Debian 12 系统上实现按要求的 ping 检查和关机功能。
要将你的 ping 检查脚本设置为系统服务,以便在每次开机时自动运行,可以按照以下步骤操作:
1、将ping_check.sh脚本文件放到指定目录,例如/etc/guanji目录,注意要给执行权限
2、创建系统服务文件
touch /etc/systemd/system/ping-check.service
在该文件中输入以下内容:
[Unit]
Description=Ping Check Service
After=network.target
[Service]
ExecStart=/bin/bash /etc/guanji/ping_check.sh
Restart=always
RestartSec = 20
StartLimitInterval = 0
[Install]
WantedBy=multi-user.target
ExecStart:指定要执行的命令。这里使用 /bin/bash 来执行你的脚本。
Restart: 设置为 always,表示如果服务崩溃或被停止,systemd 将会自动重启该服务。
RestartSec: 设置重启服务之前的延迟时间,这里是 20 秒。
StartLimitInterval: 设置为 0,表示没有限制,即不限制在特定时间内启动失败的次数。
WantedBy: 指定该服务在安装时被包含在哪个目标中。在这里,表示当系统进入 multi-user.target(多用户命令行模式)时,这个服务将会被启动。
重新加载 systemd
在修改或添加服务后,需重新加载 systemd 以识别新服务:
systemctl daemon-reload
启动服务并设置开机自启
启动服务:
systemctl start ping-check.service
设置服务在开机时自动启动:
systemctl enable ping-check.service
检查服务状态
systemctl status ping-check.service