按照之前写的Build A Website With Python and Nginx一文中的方法,在树莓派中搞了一个website,通过ssh反向隧道的方法,将校园网内网中的树莓派与公网中的一台VPS建立ssh连接,并建立反向隧道。将公网80端口映射到树莓派的某端口,从而可以直接从外网访问内网中的树莓派。地址为raspi.hejunjie.net,23:30-6:30由于断电会无法访问。

但是,由于校园网有自动断线策略,隔一段时间之后,要是没有访问网络,便会断线。而且,由于树莓派是连在路由器上面的,晚上会断电。虽然次日来电之后路由器以及树莓派会自动重启,但是并不能自动连上网。开启了Mac快速认证,但是好像ssh并不能成功。于是想到隔一段时间连一次baidu.com(百度最多地是用来测是否联网233333),若发现断网则重连。当然,也会开机自动连接网络。

想到之前用某大神写的第三方锐捷认证程序zruijie4gzhu在不使用路由器的情况下可以联网,于是放到树莓派上编译、测试运行,发现并不能成功,应该是加了路由器的原因。具体细节也不太清楚,还需认真学习网络方面知识啊。

最后只能采用网页认证了。将学校新开发的网页验证页面看了看,发现要是没有认证,连接墙内网址时认证服务器会返回一个javascript重定向代码,用来跳转到认证页面。然后发送用户名密码等参数到认证服务器,然后就ok啦。

用python写了个脚本,可以成功登陆&下线。源码地址

接着就要在Pi中用Cron定时访问百度

*/5 * * * * /home/pi/ruijie.py

开机时程序便会自动启动,并每5分钟连一次百度,确保可以不断网啦~

当然,还得在每晚十一点半之前关机,不然老是断电关机就不好了。周日、周一到周四的23:26下线并关机。

26 23 * * 0-4 /home/pi/ruijie.py -l && sudo shutdown 0