【代码】Shell脚本实现连续Ping不通则执行指定脚本

前言

Shell脚本实现连续Ping不通则执行指定脚本

源代码

TARGET:定义目标IP地址
MAX_MISS:定义连续ping不通的最大次数
STATE_FILE:定义存储次数的状态文件
DELAY:定义ping的间隔时间
SCRIPT_FILE:定义执行的指定脚本文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
TARGET=192.168.0.1
MAX_MISS=10
STATE_FILE=/root/misses-count
DELAY=1
SCRIPT_FILE=/root/script.sh

while :; do
# 读取状态文件
misses=$(cat "$STATE_FILE" 2>/dev/null || echo 0)
# ping一次并判断结果
if ping -c 1 -W 1 "$TARGET" >/dev/null 2>&1; then
# ping通了就清零状态文件
echo 0 > "$STATE_FILE"
else
# 没ping通就累加次数到状态文件
misses=$(( misses + 1 ))
echo "$misses" > "$STATE_FILE"
# 如果超过最大次数,则执行指定命令
if [ "$misses" -eq "$MAX_MISS" ]; then
bash $SCRIPT_FILE
fi
fi
# 延迟
sleep $DELAY
done

完成