翱翔門戶自動填報疫情

DoraemonHC發表於2020-11-21

利用Linux Shell指令碼和Crontab定時任務實現每日自動填報疫情,並將填報結果推送至微信。

使用的環境:斐訊K2路由器,使用第三方的PDCN韌體,此韌體支援自定義配置 Crontab 定時任務。並且考慮到路由器一般會長期穩定執行,而不像電腦那樣可能處於待機或關機狀態,因此很適合在上面部署定時任務。

推送至微信的功能需要先用微信繫結Server醬,開通方法見http://sc.ftqq.com/3.version

任務指令碼

#!/bin/sh
login_url="https://uis.nwpu.edu.cn/cas/login?service=http%3A%2F%2Fyqtb.nwpu.edu.cn%2F%2Fsso%2Flogin.jsp%3FtargetUrl%3Dbase64aHR0cDovL3lxdGIubndwdS5lZHUuY24vL3d4L3hnL3l6LW1vYmlsZS9pbmRleC5qc3A%3D"
#登入引數
login_params="username=替換為學號&password=替換為密碼&currentMenu=1&execution=e1s1&_eventId=submit&geolocation=&submit=稍等片刻……"
commit_url_referer="http://yqtb.nwpu.edu.cn/wx/ry/jrsb.jsp"
commit_url="http://yqtb.nwpu.edu.cn/wx/ry/ry_util.jsp"
#需要上報的資料
commit_form_data="xasymt=1&actionType=addRbxx&userLoginId=替換為學號&fxzt=9&userType=2&userName=替換為姓名&szcsbm=1&szcsmc=在學校&sfyzz=0&sfqz=0&tbly=sso&qtqksm=&ycqksm=&qrlxzt=&xymc=替換為學院名稱&xssjhm=替換為手機號"
#ServerChan推送地址,見http://sc.ftqq.com/?c=wechat&a=bind
server_chan_url="https://sc.ftqq.com/替換為你的SCKEY.send"

#獲取指令碼所在路徑
script_dir=`dirname $0`
cd $script_dir
echo "刪除上次的填報記錄..."
rm -rf result.json

echo "獲取臨時session..."
curl -I -s -o /dev/null --cookie-jar session.txt $login_url
echo "開始登入門戶..."
curl --cookie session.txt --cookie-jar session.txt --referer $login_url --data-urlencode $login_params -L -o /dev/null -s $login_url
echo "開始疫情填報..."
curl -b session.txt -o result.json -L -s --referer $commit_url_referer --data-urlencode $commit_form_data $commit_url
echo "讀取上報結果..."
result=$(cat result.json)
state=$(echo $result | jq ".state")#jq是第三方的json解析工具,在PDCN的韌體的路由器上會自動下載該二進位制程式
if [ $state -eq 1 ];then
	msg_title="疫情上報成功"
else 
	msg_title="疫情上報失敗"
fi
echo $msg_title
curl -s -L -o /dev/null -G --data-urlencode "text=$msg_title" --data-urlencode "desp=本次疫情填報結果為$result。如果狀態碼為1,則表示填報成功;如果狀態碼為其他值或者為空,則表示填報失敗。填報時間:【$(date "+%Y-%m-%d %H:%M:%S")】" $server_chan_url
echo "填報結果已經推送到微信"

部署到路由器上

Windows PowerShell
版權所有 (C) Microsoft Corporation。保留所有權利。

嘗試新的跨平臺 PowerShell https://aka.ms/pscore6

#使用ssh登入到路由器
PS C:\Users\Doraemon> ssh -l admin 192.168.123.1
admin@192.168.123.1's password:


BusyBox v1.24.2 (2020-07-01 13:07:02 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

[RT-AC54U-GPIO-1-PSG1218-64M 3.4.3.9-099_20-08-2]# 2020-11-21 20:13:33
#新建一個檔案yq.sh,輸入上面的指令碼
[RT-AC54U /opt/home/admin]# vi yq.sh
#新增執行許可權
[RT-AC54U /opt/home/admin]# chmod 777 yq.sh
#設定定時任務
[RT-AC54U /opt/home/admin]# crontab -e
#輸入30 8 * * * /home/admin/yq.sh & 
#表示每天8點30分執行疫情填報任務

 

相關文章