Shell脚本调用接口检测服务是否异常
大家好,第一次发布文章,希望不对的地方大家多多指教
背景(废话,可以跳过)
由于项目是传统的项目,巴拉巴拉一堆,需要进行自动巡检调用一下接口看服务是否正常,异常时候通知钉钉群里面的机器人,就有了下面脚本,下面的成果是我百度了两个小时的结果,对不对的也不确定,应该能凑合用吧
shell脚本
#!/bin/bash
#错误日志地址
path=/opt/error.log
#用户认证接口
login_url="http://123.56.120.215:80/part1?username=123&password=123"
get_user_url="http://123.56.120.215:80/part2"
#请求接口获取token
result=$(curl --request GET ${login_url} -s)
#判断字符串是否包含tokenid=,当用户登录成功是会返回token.id=xxxxxx
token_id="token.id"
if [[ ${result} == *${token_id}* ]]
then
#分割字符串,分隔符为=
token=(${result#*=})
#去除tokenid中可能存在的空格
token=${token// /}
#echo ${token}
#拼接获取用户信息接口地址
data={\"uuid\":\"${token}\"}
#获取用户信息
user_result=$(curl -X POST ${get_user_url} -H 'Content-Type: application/json' -d ${data})
#如果获取的用户信息长度小于3,则证明获取用户的接口存在问题,则调用钉钉机器人发送错误信息
if [[ ${#user_result} -lt 3 ]]
then
#表示服务异常,输出错误日志想钉钉机器人发消息,发送英文是因为之前写的中文,然后乱码了,烦了不想解决了,所以就改成英文了!!!
echo $(date)":获取用户信息失败了,token:"${token} >> ${path}
#echo "result:"${user_result}
curl 'https://oapi.dingtalk.com/robot/send?access_token=b664e4c4f3b1fd4e6a9a96a456b9e41298adf43af549de89b58d3be8bc' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content":"Warning!!!Warning!!! call am/bjca/User/getUserInfo interface has a problem "}}'
fi
else
#表示服务异常,输出错误日志想钉钉机器人发消息,发送英文是因为之前写的中文,然后乱码了,烦了不想解决了,所以就改成英文了!!!
echo $(date) ":tokenid失败了。。。url:"${login_url} >> ${path}
curl 'https://oapi.dingtalk.com/robot/send?access_token=b664e4c4fa9a96a456b9e41298adf43af549de89b58d3be8bc' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content":"Warning!!!Warning!!! call am/identity/authenticate interface has a problem "}}'
fi
后续
#将脚本添加到Linux的定时任务中,可以通过查看错误日志里面的内容查看是否加入成功
[root@iZ2zecgdlf7oolchnb6t2kZ shellScript]# vim /etc/crontab
*/1 * * * * root /opt/shell/curlScript.sh