1. 创建飞书 Webhook

首先,你需要在飞书中创建一个 Webhook,以便发送消息。获取 Webhook URL。

2. 编写 Shell 脚本

以下是一个示例脚本,使用 ping 命令检测 IP 地址,并在连续三次失败后发送通知:


#!/bin/bash

# 设置要检测的域名

DOMAIN="www.baidu.com"  # 替换为你想检测的IP或者域名

# 设置飞书 Webhook URL

WEBHOOK_URL="https://open.feishu.cn/open-apis/bot/v2/hook/XXXXXXXX"  # 替换为你的 Webhook URL

# 失败计数器

failure_count=0

# 当前连接状态,初始为 "reachable"

current_status="reachable"

# 循环检测

while true; do

    # 发送 ping 请求,-c 1 表示只发送一次

    if ping -c 1 "$DOMAIN" > /dev/null; then

		#打印每次ping正常日志

        #echo "[$(date)] $DOMAIN is reachable."

        failure_count=0  # 重置失败计数器

        # 如果之前是不可达状态,发送恢复通知

        if [ "$current_status" == "unreachable" ]; then

            curl -X POST "$WEBHOOK_URL" \

            -H "Content-Type: application/json" \

            -d '{

                "msg_type": "text",

                "content": {

                    "text": "'"$DOMAIN"' 恢复正常."

                }

            }'

            current_status="reachable"  # 更新状态

        fi

    else

		#打印每次ping异常日志

        #echo "[$(date)] $DOMAIN is unreachable."

        ((failure_count++))  # 增加失败计数器

        # 如果连续失败三次,发送通知

        if [ "$failure_count" -ge 3 ]; then

            if [ "$current_status" == "reachable" ]; then

                curl -X POST "$WEBHOOK_URL" \

                -H "Content-Type: application/json" \

                -d '{

                    "msg_type": "text",

                    "content": {

                        "text": "检测到'"$DOMAIN"'异常,请检查服务状态,请注意!"

                    }

                }'

                current_status="unreachable"  # 更新状态

            fi

        fi

    fi

    # 检测间隔(单位:秒)

    sleep 60

done

  1. 将上述脚本保存为 ping_monitor.sh

  2. 赋予脚本执行权限:

    chmod +x ping_monitor.sh
    
  3. 运行脚本:

    ./ping_monitor.sh

说明

  • 地址: 你可以将 www.baidu.com 替换为你需要检测的域名/IP 地址。

  • Webhook URL: 将 your_webhook_url 替换为你在飞书中创建的 Webhook URL。

  • ping 命令: 使用 ping -c 1 只发送一次请求。

  • 失败计数: 如果连续三次检测失败,脚本会通过 Webhook 发送通知。

  • 循环检测: 脚本每分钟执行一次检测。

注意事项

  • 确保你的服务器或计算机能够访问飞书 Webhook。

  • 如果需要在后台运行,可以使用 nohupscreen 命令。