pysrun 是用Python编写的北师大上网认证网关客户端
本脚本无需安装其它程序库, 只需要下载即可执行. 需要用到的文件有两个:
pysrun
: 可执行Python脚本,~/.pysrun.cfg
: 配置文件.
本软件包内提供了样例配置文件pysrun.cfg.example
. 第一次使用前, 请将其拷贝到
~/.pysrun.cfg
, 同时填入包括用户名密码在内的相关信息.
配置文件分为如下部分, 每个部分中有若干个选项.
[Server]
填写北师大认证服务器信息. 默认值是现在可用的服务器.
address
: 服务器IP地址或主机名.port
: 服务器监听端口. 客户端通过向这个端口上监听的服务器发送信息来工作.
[Client]
用于配置客户端所运行需要的主机信息.
interface
: 在哪个网络界面上认证. 此界面的MAC地址将成为认证信息的一部分.
[Account]
填写用户帐号信息.
username
: 帐号 (通常为学工号)password
: 密码
[Session]
用于配置会话状态的保存.
uidfile
: 保存所谓"uid"信息的文件路径. 每次登入, 服务器会返回一个uid. 登出时需要使用这个uid退出.uidfile
路径所指示的文件用来存放每次登入所返回的uid. 在登出前, 不要修改这个文件的内容或者移动乃至删除这个文件.
- 登入: 使用
pysrun login
命令. 登入成功后将安静地退出. - 登出: 使用
pysrun logout
命令. - 强制离线: 又称踢人, 即让所有占用这个帐号的IP地址离线, 使用
pysrun kick
命令.
注意: 需要让pysrun
所在目录在您的PATH
环境变量中, 或者使用类似./pysrun
的绝对路径启动程序.
目前在Linux系统上经过基本测试, 可以满足最简单的功能需要. 在各种BSD系统上(包括Free/Net/Open/DragonFlyBSD)也可以使用, 但未经过测试.
本程序不依赖于系统是32或64位.
北师大提供的"官方"Linux客户端是一个动态编译的32位程序. 它具有如下不足:
- 不适用于64位系统, 需要在64位系统上再安装32位C标准库.
- 是"黑箱"程序, 无源码, 不知其工作原理, 必须诉诸逆向工程.
- 自Linux 2.6.35后, 出现了官方客户端无法使用的情况. 其原因是官方客户端在进行
bind()
调用时采取了不规范的用法, 被较新的内核认为是错误的调用而无法执行 (参见https://lkml.org/lkml/2011/7/9/37, 或 Linux commit d0733d2e). 这导致在较新的系统上官方客户端完全失效.
附注: 在更新的系统上,
bind()
到AF_UNSPEC
类型的地址被允许用于地址为INADDR_ANY
, 见 Linux commit 29c486df, 而这也正是官方客户端所做的. 所以对于此commit以后的内核版本, 上一点不能用于作为否定官方客户端的较强论据.
同时, 北师大也没有给出对各种BSD系统的支持. 尽管很多BSD系统建有Linux兼容层, 但通过兼容层运行本来就编写甚为sloppy的Linux程序可能遇到各种问题.
因此, 我们需要一个新的客户端可以改变以上所列的不足. 新客户端支持Linux和各种BSD, 支持32位和64位系统, 有开放的源码, 而且避免了原客户端中的不规范编程.
BSD许可证, 见文件COPYRIGHT