校园网一段时间后会自动断开,导致每次都需要手动登录,遂考虑自动执行脚本来保持校园网在线。
登录
curl
访问校园网登录登出接口
1
2
3
4
|
# 登录
curl https://p.xxu.edu.cn/api/portal/v1/login -X POST -d '{"username":"学号", "password":"密码"}'
# 登出
curl https://p.xxu.edu.cn/api/portal/v1/logout -X POST -d '{}'
|
加密
账号密码不明文写入脚本,这里使用 openssl
对密码加密解密
加密 encrypt.sh
1
2
3
4
5
6
7
|
#! /usr/bin/bash
# 密码加密后存储到文件中
echo 'your-password' | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'encrypt-pass' > .password
# 更新文件的权限,只有该文件的所有者或 root 用户可以访问
chmod 600 .password
|
解密及登录 run.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#! /usr/bin/bash
USERNAME="your-username"
PASSWORD=`cat .password | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'encrypt-pass' -d`
date
if [ "$1" = "logout" ]; then
echo "[campus net] logout"
curl https://p.xxu.edu.cn/api/portal/v1/logout -X POST -d '{}'
else
echo "[campus net] login"
curl https://p.xxu.edu.cn/api/portal/v1/login -X POST -d '{"username":"'"$USERNAME"'", "password":"'"$PASSWORD"'"}'
fi
echo
|
执行 ./encrypt.sh
得到密码文件后,使用 ./run
登录,./run logout
退出。
自动执行
在实验室主机 WSL 中设置 crontab
自动执行脚本,完成校园网登录,保持在线
1
2
3
4
5
|
$ crontab -e
# 每隔 3 天的上午 8 点执行
0 8 */3 * * cd /home/usrname/campusnet && sh /home/usrname/campusnet/run.sh >> netloging.log 2>&1
## 每分钟执行(用于测试)
# * * * * * cd /home/usrname/campusnet && sh /home/usrname/campusnet/run.sh >> netloging.log 2>&1
|
检查 netloging.log
日志,确保执行成功,校园网的自动登录大功告成。
Reference