linux 批量检测网络通断

需要准备的文件

1.配置文件(config)

创建一个名为 config 的文件,内容如下:

CORPID=your_corpid
CORPSECRET=your_corpsecret
AGENTID=your_agentid

 

2.地址文件(ipadd)

创建一个名为ipadd的文件,内容如下:

主机名 192.168.0.1

3.脚本文件(*.sh) 内容详见代码

4.将脚本、ipadd 文件和 config文件放在同一个目录下

5.创建计划任务

 

#命令行中执行 
crontab -e
*/5 * * * * /path/to/script_name.sh
#/path/to/script_name.sh 为你脚本所在位置 */5 * * * * 表示没5分钟执行一次
#!/bin/bash
# 脚本所在目录
SCRIPT_DIR=$(dirname "$0")
# 文件路径(相对于脚本所在目录)
IP_FILE="$SCRIPT_DIR/ipadd"    # 存放 IP 地址以及对应名称的文件
CONFIG_FILE="$SCRIPT_DIR/config"  # 存放企业微信应用配置的文件
# 读取企业微信应用配置
CORPID=$(grep "CORPID=" "$CONFIG_FILE" | cut -d '=' -f2)
CORPSECRET=$(grep "CORPSECRET=" "$CONFIG_FILE" | cut -d '=' -f2)
AGENTID=$(grep "AGENTID=" "$CONFIG_FILE" | cut -d '=' -f2)
# 获取 access_token
ACCESS_TOKEN=$(curl -s "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CORPID&corpsecret=$CORPSECRET" | grep -Po '"access_token":"\K[^"]*')
# 检查文件是否存在
if [ ! -f "$IP_FILE" ]; then
    echo "Error: IP file $IP_FILE not found"
    exit 1
fi

if [ ! -f "$CONFIG_FILE" ]; then
    echo "Error: Config file $CONFIG_FILE not found"
    exit 1
fi

# 获取当前时间
TIME=$(date "+%Y-%m-%d %H:%M:%S")

# 检查 IP 地址并构建消息
MESSAGE="external IP Connectivity Check Result at $TIME:\n"
ALL_REACHABLE=1  # 标志变量,1 表示所有设备都可达,0 表示有不可达设备

while read -r LINE; do
    # 跳过空行和注释
    [ -z "$LINE" ] && continue
    [[ "$LINE" =~ ^# ]] && continue

    # 提取名称和 IP
    NAME=$(echo "$LINE" | awk '{print $1}')
    IP=$(echo "$LINE" | awk '{print $2}')

    # 检查 IP 格式
    if ! [[ "$IP" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
        MESSAGE+="Invalid IP format for $NAME: $IP\n"
        ALL_REACHABLE=0
        continue
    fi

    # ping 测试(发送 3 个数据包,超时 2 秒)
    if ping -c 3 -W 2 "$IP" >/dev/null 2>&1; then
        MESSAGE+=" $NAME ($IP) is reachable\n"
    else
        MESSAGE+=" $NAME ($IP) is unreachable\n"
        ALL_REACHABLE=0
    fi
done <"$IP_FILE"

# 如果所有设备都可达则不发送消息
if [ "$ALL_REACHABLE" -eq 1 ]; then
    exit 0
fi

# 发送消息到企业微信应用
curl -s -S -X POST -H 'Content-Type: application/json' \
    -d "{
        \"touser\": \"@all\",
        \"msgtype\": \"text\",
        \"agentid\": $AGENTID,
        \"text\": {
            \"content\": \"$MESSAGE\"
        }
    }" "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$ACCESS_TOKEN"

 

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注