Shell脚本接入预警通知:一行命令发告警

运维同学常写的是Shell脚本:日志巡检、磁盘清理、定时备份、端口监控。这些脚本出问题时,直接的方式就是用一行curl调用互亿无线预警通知接口,把告警短信或语音发出去。Shell接入不依赖任何语言环境,服务器自带curl即可。本文给出可直接…

运维同学常写的是Shell脚本:日志巡检、磁盘清理、定时备份、端口监控。这些脚本出问题时,直接的方式就是用一行curl调用互亿无线预警通知接口,把告警短信或语音发出去。Shell接入不依赖任何语言环境,服务器自带curl即可。本文给出可直接放进脚本的命令与函数。

Shell接入的接口与参数

短信接口 https://api.ihuyi.com/sms/Submit.json ,语音接口 https://api.ihuyi.com/voice/vm 。用curl -d以表单方式POST参数account、password、mobile、content。

  • account:APIID,password:APIKEY;
  • mobile:接收手机号;
  • content:告警内容;
  • 返回JSON中code=2为提交成功。

一行curl发告警

下面这行命令直接发送短信告警,可放在脚本的失败分支里:

curl -s -X POST https://api.ihuyi.com/sms/Submit.json \
  -d "account=你的APIID" \
  -d "password=你的APIKEY" \
  -d "mobile=13800138000" \
  -d "content=定时备份脚本backup.sh执行失败,请尽快查看日志"

更优雅的做法是封装成一个shell函数,在脚本source后随时调用:

notify_sms() {
  curl -s -X POST https://api.ihuyi.com/sms/Submit.json \
    -d "account=$IHUYI_APIID" \
    -d "password=$IHUYI_APIKEY" \
    -d "mobile=$1" \
    -d "content=$2"
}

# 用法:备份失败时调用
notify_sms "13800138000" "数据库备份失败,主机db-01"

APIID与APIKEY通过环境变量IHUYI_APIID注入脚本,避免写死。

Shell接入注意事项

  • content含空格与中文时要用双引号包裹,必要时用curl --data-urlencode;
  • curl加--max-time 10,避免网络问题让脚本卡住;
  • 密钥放在~/.bashrc或受保护的配置文件里,不写入共享脚本仓库;
  • 语音告警把URL换成/voice/vm即可,参数相同。

带返回码判断的Shell脚本

巡检脚本通常用Shell编写,下面这个版本加上了返回JSON解析与失败提示,可直接放进crontab:

#!/bin/bash
APIID="你的APIID"
APIKEY="你的APIKEY"
MOBILE="13800138000"
CONTENT="服务器内存使用率超过90%,请尽快处理"

RESP=$(curl -s -X POST https://api.ihuyi.com/sms/Submit.json \
  -d "account=${APIID}" \
  -d "password=${APIKEY}" \
  -d "mobile=${MOBILE}" \
  --data-urlencode "content=${CONTENT}" \
  --max-time 10)

echo "返回: ${RESP}"
echo "${RESP}" | grep -q '"code":2' && echo "提交成功" || echo "提交失败,请查看返回"

运行方式与注意点

  • 用--data-urlencode处理中文content,避免手工编码出错;
  • --max-time限制超时,避免脚本卡死在告警环节;
  • APIID与APIKEY建议从配置文件读取,不要写死在脚本里;
  • 用grep判断code=2即可满足简单场景,复杂解析可配合jq工具。

常见报错排查

  • curl: command not found:确认系统已安装curl;
  • 返回空:检查网络与DNS,加-v参数查看握手过程;
  • 返回code非2:打印RESP,按msg定位;
  • 语音通道:URL换成 https://api.ihuyi.com/voice/vm ,参数相同。

一行curl就能让运维脚本具备主动告警能力。前往注册免费试用领取测试额度。

立即开始,免费体验

新用户注册即送免费测试额度,3分钟快速接入,专属客服全程指导

免费试用 →