个人服务器发送消息至飞书

0 阅读1分钟

个人开发者在本地电脑虚拟机安装Linux服务器,不能每时每刻都坐在电脑前观察服务器运行情况?那就写个Shell脚本把服务器运行状况发送至手机的飞书群聊中。本文只介绍这一种用法,也有其他用法可供开发者们挖掘。

  1. 写个shell脚本,我这里命名为 send_feishu.sh,代码如下。按照代码里的内容创建飞书机器人并把密钥配置好。
  2. 在需要发送消息到手机的地方调用shell脚本即可。
#!/bin/bash

# ================== 获取飞书机器人密钥 ================
# 去飞书创建一个群聊,在群聊里面添加一个“自定义机器人”,添加后复制该机器人的密钥
# 并且把该机器人的密钥(即WEBHOOK地址)写到 /etc/conf/feishu.conf 文件中(也可以直接写到脚本变量中,但是为了安全性,密钥都是不以明文形式写到脚本里的)
# 格式为: FEISHU_WEBHOOK="https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
source /etc/conf/feishu.conf
# ====================================================

send_feishu() {
    local msg="$1"
    curl -s -X POST "$FEISHU_WEBHOOK" \
        -H "Content-Type: application/json" \
        -d '{"msg_type":"text","content":{"text":"'"$msg"'"}}'
}

send_error_feishu() {
    local err_msg="$1"
    # 向飞书机器人发送消息
    send_feishu "【脚本异常警报】\n服务器:$(hostname)\n时间:$(date '+%Y-%m-%d %H:%M:%S')\n错误信息:\n$err_msg"    
    echo "脚本发生错误,已向飞书发送错误信息"
    exit 1
}

# ====================== 业务脚本 ======================
set -euo pipefail
trap 'send_error_feishu "脚本执行失败!错误命令:$BASH_COMMAND"' ERR

echo "启动 “向飞书机器人发送消息” 的脚本..."
# cd /art567/bin/false # 测试脚本异常

# 如果有参数就发送参数,没有参数就发送默认信息
if [ $# -gt 0 ]; then
    send_feishu "$1"
else
    send_feishu "【脚本执行成功】\n服务器:$(hostname)\n时间:$(date '+%Y-%m-%d %H:%M:%S')"
fi
echo "向飞书发送消息成功"

下面我将演示如何创建飞书机器人并拿到机器人的 Webhook 地址。以电脑端飞书为例: 创建飞书机器人 创建飞书自定义机器人 查看机器人Webhook地址