短信对于现在的商业服务网站来说是一个重要的资源,而监控短信资源是更好的把控短信使用状态,对于及时充值续费以及观测日常消耗频率有重要作用。
早先,采用浏览器访问并将cookie写入到监控脚本的方式实现。但是,估计是官方发现了这一问题,及时进行了修补,避免了cookie不失效的问题。如此一来,对于监控的数据获取带来了麻烦。
经过研究发现,可以增加使用curl命令自动获取cookie的办法。
对于cookie的获取,通过抓包获取浏览器post数据样式。
进一步分析后,找到post数据
使用curl命令获取cookie并写到本地
curl -c cookie.txt -X POST -d "j_username=xxx&j_password=xxx" http://xxx:8080/WebSMP/j_spring_security_check
修改脚本,使用curl命令获取状态时,使用上一步保存的cookie信息。
手动执行拿到了数据。
整个脚本内容如下:
#!/bin/bash
cd /opt/categraf/conf/input.exec
curl -c cookie.txt -X POST -d "j_username=xxx&j_password=xxx" http://xxx:8080/WebSMP/j_spring_security_check 2>/dev/null >> log.txt
value=`curl 'http://xxx:8080/WebSMP/page/account' \
-X 'POST' \
-H 'Accept: */*' \
-H 'Accept-Language: zh,en-US;q=0.9,en;q=0.8' \
-H 'Connection: keep-alive' \
-H 'Content-Length: 0' \
-H 'Origin: http://web.jianzhou.sh.cn:8080' \
-H 'Referer: http://web.jianzhou.sh.cn:8080/WebSMP/page/account.jsp' \
-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 OPR/100.0.0.0' \
-H 'X-Requested-With: XMLHttpRequest' \
-b cookie.txt \
--compressed \
--insecure 2>/dev/null`
echo "sms_3rd_account_left{ userDefineService_project=\"zcyun\", userDefineService_name=\"sms_3rd_account_left\"} $value"
将该脚本放到/opt/categraf/conf/input.exec/
下面。