前言
每天通过shell调用curl,并且随机生成一个体温数据进行打卡,将结果以邮件发送,文中部分数据已用*代替
前期准备
CentOS命令(工具,都可以通过yum安装)
- crontab 定时
- jq 解析json
- mailx 发送邮件
- curl 发送请求
- nss-tools 证书相关(提供certutil命令)
步骤
shell脚本
本步骤主要替换掉用户名、密码、databinary。
数据模板需手动抓取出来--data-binary 的值
vim dk.sh
password=''
username=''
tenantId=''
logres=$(curl 'http://****.com/epidemic/api/v1/user/login' -H 'Proxy-Connection: keep-alive' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36' -H 'Content-Type: application/json; charset=UTF-8' -H 'Accept: */*' -H 'Origin: http://****.com' -H 'Referer: http://****.com/login' -H 'Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7' --data-binary '{"password":"'$password'","tenantId":"'$tenantId'","username":"'$username'"}' --compressed --insecure -c cookie.txt -s | jq '.code')
if [ $logres -eq 200010000 ]; then
echo 登录成功
else
echo 登录失败
exit 5
fi
res=$(curl 'http://****.com/epidemic/report/today' -H 'Proxy-Connection: keep-alive' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36' -H 'Accept: */*' -H 'Referer: http://ncov.ak-sp.com/report' -H 'Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7' -b cookie.txt --compressed --insecure -s | jq '.data.id')
echo '本日数据的id已经获取到>>>'
echo $res
tod=$(date +%Y-%m-%d)
temp=$[35 + $[RANDOM%2]].$[RANDOM%10]
# 数据模板需手动抓取出来(--data-binary 的值)
result=$(curl -b cookie.txt 'http://****.com/epidemic/report' -X PUT -H 'Proxy-Connection: keep-alive' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36' -H 'Content-Type: application/json; charset=UTF-8' -H 'Accept: */*' -H 'Origin: http://****.com' -H 'Referer: http://****.com/report' -H 'Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7' --data-binary '{"department":"****","deptId":81,"name":"***","phone":"*******","address":"***********","addressCode":"******_******_******","other":0,"cough":0,"diarrhea":0,"fatigue":0,"fever":0,"otherLive":0,"liveCough":0,"liveDiarrhea":0,"liveFatigue":0,"liveFever":0,"isOutside":0,"goOut":0,"goOutText":"","traffic":-1,"quarantine":0,"receive":0,"receiveText":"","receiveTextCity":"","temperature":"'$temp'","work":1,"backWork":1,"isSatisfy":1,"reportTime":"'$tod'","id":'$res',"tenantId":"1001","dining":0,"morningDining":1,"nightDining":1,"userId":2470}' --compressed --insecure -s | jq '.code')
if [ $result -eq 200010000 ]; then
echo ''$tod'疫情打卡成功,体温: '$temp' 度' | mail -s "打卡成功" ****@****.cn
else
echo ''$tod'疫情打卡失败,记得手动打卡!' | mail -s "打卡失败" ****@****.cn
exit 5
fi
生成邮箱的证书
命令如下
echo -n | openssl s_client -connect smtp.126.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs
信任邮箱证书
命令如下
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
配置/etc/mail.rc
vim /etc/mail.rc
# 添加下面几行
set from=patr1ck@126.com
set smtp=smtps://smtp.126.com:465
set smtp-auth-user=patr1ck@126.com
set smtp-auth-password=**** # 授权码,需在网页设置
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs
#注释掉下面三行
#fwdretain subject date from to
#ignore received in-reply-to message-id references
#ignore mime-version content-transfer-encodin
# 刷新环境变量
source /etc/mail.rc
设置定时任务
crontab -e 命令进入定时任务编辑
写入下面一行配置
00 03 * * * /home/bug/./dk.sh
crontab -l 命令查看当前用户的定时任务
crontab -f 删除当前用户的定时任务
结语
因为过程有点意思,所以记录一下,仅供学习/娱乐,不可用于偷懒