逍遥游

基于树莓派打造24小时不断网drcom校园网WIFI

硬件要求

树莓派、(小米)移动电源、HDMI显示器(初次设置用)

因为有好几个地方会修改网络配置,所以需要连接HDMI显示屏

完成图

先放一张实物图
基于树莓派打造24小时不断网校园网wifi

步骤

操作系统是官方的Raspbian

接线

如图,移动电源电源线接插座,输出接树莓派,树莓派自己的外接设备略。
打开电源,我买的线有开关功能,这样就不用频繁的插拔了,保护接口。
这样移动电源能一边充电一边给树莓派供电,而且充电速度是大于放电速度的。实际测试发现,满格情况下可以不间断的给树莓派供电超过24小时,于是就能实现24小时供电了。惟一的遗憾是每次寝室断电和来电的时候,移动电源会反应不过来导致树莓派瞬间断电关机,然后立即开机,中间大概会断网一分钟左右。
不知道其他移动电源能不能同时充放电以及同时充放电对移动电源的伤害有多大,毕竟我不是学电子的。。。

创建WIFI热点

之前的博客已经提到,参见树莓派3创建WIFI无线热点

下载吉大校园网客户端

GitHub上下载最新的校园网客户端命令行版(newclient.py),这个是一直维护的,所以应该是会包含最新的可用版本。

不久前,学校为了抑制学生自己建热点从而提升JLU.NET无线网络质量,升级了校园网客户端。之前的牛人早已不在学校了,所以这个版本似乎是由小朋友写的。程序能正常运行,但是在容错方面有所欠缺,比如拔掉网线再插上会导致网络断开而程序仍继续运行(做无用工),还不能Crtl+C杀死。所以我重构了一份,地址:GitHub (如果失效了,请下载上面的版本。注:我Python很渣)

1
wget https://github.com/newnius/raspberryPi/raw/master/drcom.py

修改drcom配置文件

打开文件,配置文件在最上方,主要是修改下面几项:

1
2
3
4
5
### Required ###
username='USERNAME' #用户名
password='PASSWORD' #密码
host_ip = 'IP_ADDR' #ip地址
mac = 0x010203040506 #mac地址

可以通过命令获得本机mac地址

1
echo 0x`ifconfig eth | egrep -io "([0-9a-f]{2}:){5}[0-9a-f]{2}" | tr -d ":"`

这个是以我的版本为主的,第一个版本类似

此外,我还加了几个新的参数,包括以下几项:(这些不是必须修改的)

1
2
3
4
5
6
### Optional ###
host_name = '++++++++' #计算机名
host_os = 'Windows 10' #操作系统
bind_ip = '0.0.0.0' #must be listed in your `ip a` results
LOG_PATH = '/var/log/drcom.log'
RETRY = False

解释一下:
bind_ip: 在有多块网卡的情况下可以指定网卡转发流量,默认情况是所有 应该是这意思…
LOG_PATH: 日志文件存放位置,请保证该文件可被当前用户读写

1
2
3
sudo touch /var/log/drcom.log
sudo chown $USER:$USER /var/log/drcom.log
chmod 755 /var/log/drcom.log

RETRY: 默认为False,出现异常时程序会退出,设为True开启失败(无限次)重试功能。考虑到可能有时带着笔记本在替他地方登录,树莓派上的客户端应该自行停止。否则,两台设备一起抢网,啧啧。(有两部手机的孩子能体会到这感觉)

其他的参数我就不懂了,只是一个搬运工~

修改网卡配置,设置静态IP并修改MAC地址

实际测试的时候发现,要想登录成功,还需要修改树莓派的MAC地址为系统填写的MAC地址

编辑网络配置文件

1
sudo vim /etc/network/interfaces

把eth0的配置修改成(具体配置根据实际填写)

1
2
3
4
5
6
7
8
9
auto eth0
iface eth0 inet static
hwaddress ether AA:BB:CC:DD:EE:FF #modify mac address
address a.b.c.d
netmask 255.255.255.0
gateway a.b.c.e
#network a.b.c.0
#broadcast a.b.c.255
dns-nameservers 8.8.8.8 114.114.114.114

重启网络服务使生效

1
sudo service networking restart

编写脚本,开机自启动

现在已经可以使用脚本登录了,但是每次开机都要手工登录一遍,特别麻烦,可以设置开机自动运行
简单起见,我直接把启动命令写在了 /etc/rc.local 文件中

在文件exit 0 之前加入一行代码:

1
2
#以pi 用户运行 drcom.py 文件
nohup sudo -u pi python /usr/local/drcom.py &

重启

1
sudo reboot

不出意外的话重启之后就能连上wifi直接上网了

关于梯子

咳咳,姿势太多,不列举了,免得查水表

参考

jlu-drcom-client

Ubuntu:永久修改MAC地址


多说停止服务,disqus引导注册太过分,暂时不上评论系统了。有机会自己造轮子吧。邮箱:input@newnius.com