自动登录南科大校园网的 shell 脚本

自动登录南科大校园网的 shell 脚本

💡 原文中文,约3900字,阅读约需10分钟。
📝

内容提要

作者因校园网限制5台设备且需CAS认证,使用OpenWrt路由器无线连接校园WiFi并建立局域网。因Python方案失败,改用Shell脚本,通过grep提取一次性execution参数,配合curl提交账号密码实现自动登录,并用CronTab定时运行,解决设备掉线问题。

🔎

延伸解读

为何选择 Shell 而非 Python

作者最初尝试用 Python 编写登录脚本,但路由器闪存仅 32MB,安装解释器后空间不足;即使将 Python 安装到外接设备,运行正则匹配时也会卡顿近 10 秒。最终改用 Shell 脚本,利用 grep 和 ${} 处理字符串,轻量且高效。这提醒我们,在资源受限的嵌入式设备上,Shell 往往是更务实的选择。

CAS 认证的额外参数:execution

南科大校园网登录并非简单的账号密码提交,还需要一个一次性的 execution 参数。该参数由服务器在访问登录页时生成,并嵌入 HTML 中。脚本通过 curl 获取页面,再用 grep 提取该值,最后随表单提交。这种机制增加了自动登录的复杂度,也是许多类似脚本需要解决的关键点。

CronTab 配置的常见陷阱

作者在配置定时任务时遇到多个问题:文件末尾缺少换行符会导致最后一条任务不执行;脚本需要足够权限,建议设为 777;脚本首行应指定解释器,并 source 环境配置文件。这些细节虽小,却直接影响自动化任务的可靠性,值得在部署时逐一检查。

设备限制与信号切换的意外影响

校园网限制单账号 5 台设备,而作者的路由器因手机在 2.4GHz 和 5GHz 频段间切换,被 CAS 判定为两台设备,导致挤掉线。这揭示了无线网络环境中,信号波动可能触发认证系统的误判。自动登录脚本虽能缓解掉线问题,但根本解决仍需优化网络配置或与校方沟通。

❓

Q&A

为什么需要自动登录南科大校园网的脚本?

因为校园网限制一个账号只能同时连接5台设备,且所有设备都需要通过CAS认证。当设备在不同频段间切换时,CAS会将其判定为不同设备,导致路由器被挤掉线。自动登录脚本可以定时重新认证,解决掉线问题。

这个Shell脚本是如何实现自动登录的?

脚本先用curl访问CAS登录页面,将返回的HTML保存到文件,然后用grep提取一次性execution参数,再通过curl提交用户名、密码和execution参数完成登录。

在OpenWrt路由器上运行Python脚本遇到了什么问题?

路由器闪存只有32MB,安装Python解释器时空间不足;将Python安装到外接设备后,运行登录脚本时因正则匹配大字符串导致路由器卡顿近10秒,最终弃用Python方案。

配置CronTab定时任务时需要注意哪些坑?

CronTab文件末尾必须有换行符,否则最后一条任务不执行;脚本需要足够的权限(可设为777);脚本第一行要加#!/usr/bin/sh,第二行最好source profile文件以获取正确环境。

如何解决路由器无法解析校园内网地址的问题?

在路由器DNS设置中取消“重绑定保护”,这样路由器就能正常解析校园内网DNS,访问校内服务。

为什么路由器会被挤掉线?

因为一个账号限制5台设备,当手机在2.4GHz和5GHz频段间切换时,CAS会将其识别为两个不同设备,导致设备总数超限,路由器被挤掉线。

🏷️

标签

➡️

继续阅读