面向 Ubuntu Server 24.04 x86_64 的中国农业大学成绩监控工具。程序通过 EasierConnect 兼容 SOCKS5 隧道访问教务系统,使用持久化的无界面 Chromium 每分钟主动查询成绩,并在出现新成绩或成绩变化时通过飞书机器人通知。
本仓库只包含服务器版。Windows GUI 和普通桌面用法位于
THexagram/Cau-Grade-Monitor。
- systemd 同时管理 VPN 隧道和成绩监控,开机自动恢复。
- 使用教务系统独立账号密码直接登录,不依赖浏览器 Cookie。
- 每 60 秒重新请求成绩接口,不复用静态页面结果。
- 新成绩通知包含课程名、成绩、学分和当前加权绩点。
- 默认将必修与体育类课程计入绩点,可通过配置增加或排除课程。
- 凭据保存为 root 专用的
0600文件,并通过 systemd credentials 提供。 - Chromium 采用低资源模式,服务设置内存上限和自动重启策略。
- 提供 Windows 与 ECS 单点 VPN 账号的安全切换脚本。
- Ubuntu Server 24.04 x86_64。
- 至少约 1 GiB 内存,低内存实例建议配置 2 GiB swap。
- 可访问
vpn.cau.edu.cn的网络。 - CAU VPN 账号、教务系统直登账号和直登密码。
- 可选的飞书群机器人 Webhook 与签名密钥。
教务系统直登密码是 /jsxsd/xk/LoginToXk 使用的独立密码,不一定与统一身份认证
或 VPN 密码相同。
在 Ubuntu 24.04 x86_64 上执行:
git clone https://github.com/THexagram/Cau-Grade-Monitor-Server.git
cd Cau-Grade-Monitor-Server
chmod +x build-package.sh install.sh uninstall.sh bin/*
./build-package.sh构建脚本会下载固定版本的 Go、Node.js 和 Chromium Headless Shell,并从固定提交
编译 CAU 兼容的 NJUConnect 派生客户端。结果位于 dist/:
CauGradeMonitor-Server-v*-linux-x64.tar.gz
CauGradeMonitor-Server-v*-linux-x64.tar.gz.sha256
也可以在 GitHub Actions 的 Build package 工作流中手动生成构建产物。
将完整包上传到服务器后执行:
tar -xzf CauGradeMonitor-Server-v*-linux-x64.tar.gz
cd CauGradeMonitor-Server-v*-linux-x64
sudo ./install.sh安装器会创建受限用户 caugrade,安装 Chromium 运行库,并依次询问:
- VPN 账号与密码。
- 教务系统直登账号与独立密码。
- 飞书机器人 Webhook 与可选签名密钥。
配置完成后检查:
sudo cau-grade-monitor-status正常状态应包括两个 active 服务、127.0.0.1:1080 监听端口,以及类似
No change. Rows=24; source=fetch. 的监控日志。实际课程数量以账号为准。
# 查看状态
sudo cau-grade-monitor-status
# 跟踪成绩监控日志
sudo journalctl -u cau-grade-monitor.service -f
# 跟踪 VPN 日志
sudo journalctl -u cau-vpn.service -f
# 重新填写凭据
sudo cau-grade-monitor-configure
# 重启服务
sudo systemctl restart cau-vpn.service
sudo systemctl restart cau-grade-monitor.service配置位于 /etc/cau-grade-monitor/,浏览器资料和成绩状态位于
/var/lib/cau-grade-monitor/。应用文件安装在 /opt/cau-grade-monitor/。
同一个 VPN 账号不能同时在 Windows 和 ECS 登录。切换到 Windows 前,在本机 PowerShell 7 执行:
pwsh ./tools/Enter-WindowsVpnMode.ps1 `
-Server 203.0.113.10 `
-User ecs-user `
-IdentityFile "$HOME/.ssh/your-ecs-key.pem"脚本确认云端两个服务均为 inactive 后,再登录 Windows EasyConnect。
切回服务器时,必须先在 Windows EasyConnect 中选择“注销登录”并确认,而不是 只关闭窗口。等待约一分钟后执行:
pwsh ./tools/Restore-ServerMonitor.ps1 `
-Server 203.0.113.10 `
-User ecs-user `
-IdentityFile "$HOME/.ssh/your-ecs-key.pem"示例中的 203.0.113.10 是文档保留地址,请替换为自己的 ECS 公网地址。
默认只统计必修与体育类课程,并按学分加权:
| 成绩 | 绩点 | 成绩 | 绩点 |
|---|---|---|---|
| A+ / A | 4.0 | A- | 3.7 |
| B+ | 3.3 | B | 3.0 |
| B- | 2.7 | C+ | 2.3 |
| C | 2.0 | D+ | 1.5 |
| D | 1.0 | F | 0 |
可编辑 /etc/cau-grade-monitor/monitor.json 中的 gpa 配置,按课程类型、课程
标识设置计入和排除规则。修改后重启监控服务。
- 仓库和公开构建产物不包含账号、密码、Webhook、私钥、Cookie 或成绩数据。
- 不要在 Issue、截图或完整日志中提交个人信息和会话标识。
- 遇到验证码、短信、OTP、二维码确认、账号锁定或密码过期时,自动登录会停止, 不会尝试绕过安全验证。
- 本工具仅用于本人账号的低频成绩查询。请遵守学校网络和教务系统使用规定。
本仓库目前未授予开源许可证。第三方依赖和派生 VPN 客户端的说明见
THIRD_PARTY_NOTICES.md。
sudo /opt/cau-grade-monitor/uninstall.sh默认保留配置和运行状态。彻底删除:
sudo /opt/cau-grade-monitor/uninstall.sh --purge