ASUS ac68u 折腾校园网 - yunfanfan/Notes GitHub Wiki
2021.3.10
因为登录校园网的脚步是python文件,所以要在路由器上面安装python。
我也不清楚在路由器上面安装python是不是和在之前用的linux服务器上面安装有什么区别,应该就只是路由器配置要低一点,就算如此python至少也是能运行的吧?
不管那么多,直接开整。
准备按照Linux安装Python2.7 - 云+社区 - 腾讯云来进行安装,但是第一步就出现了问题。
wget https://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
系统会提示:
Connecting to www.python.org|2a04:4e42:36::223|:443... failed: Network is unreachable.
Connecting to www.python.org|151.101.108.223|:443... connected.
OpenSSL: error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version
Unable to establish SSL connection.
查询了一下,好像是wget版本比较低的原因。
根据X7.9.1里的wget需要更新了,TLS的某个版本已经不支持 - 华硕固件 - KoolShare - 源于玩家 服务玩家这里的讨论,可以通过安装entware
来更新wget和curl,我猜entware
是一个类似于pip的包管理器?
我决定把这个安装到u盘里面。
先格式化u盘
opkg install wget
成功,不过不能直接用wget命令,因为还是之前的wget,要用绝对路径/opt/bin/wget
/opt/bin/wget --no-check-certificate https://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
发现可以直接用opkg安装python,默认版本就是2.7
首先在配置文件中指定opkg将程序安装在U盘或硬盘上
/tmp/mnt/onmp
以后我们使用opkg -d usb install xxx即可将程序安装至usb
但是经过尝试,使用opkg install python
命令会提示找不到python的包来安装,我在Index of /armv7sf-k2.6/也找不到对于的python2的包,仅有python3,估计原因就是这个版本不支持Python2
那现在来尝试一下,能不能把drcom的代码转成python3的版本。
经过尝试失败,bytes与string的转换没有问题,但就是没有发包回来。
找到一篇对于entware描述很详细的文章玩转路由之 AsusWRT-Merlin 与 Entware - python-yzw - OSCHINA - 中文开源技术交流社区
在我快要放弃的时候,准备上最后的绝招了,再不行就拉倒把。
参考Linux安装python2.7、pip和setuptools - 简书
足足编译了快一个小时。总算是安装好了。
记录一下绝对路径
/opt/home/root/python27/bin/python2.7
但是按照后续让按照setup-tool就报错了,说是没有zlib模块。opkg安装了一下zlib和zlib-dev,提示zlib之前已经有了,但是zlib-dev可以安装,然后说要重新编译安装python2.7,我就想先别装这个setup-tools了,先看看我的drcom能不能运行的了,如果不行的话再安装也不迟。
/opt/home/root/python27/bin/python2.7 drcom_tea.py
运行成功!
我想要让程序在后台一直运行使用命令
nohup /opt/home/root/python27/bin/python2.7 drcom_tea.py &
可以使用命令tail nohup.out
随时查看输出。
先暂且看看这样运行会不会掉线,如果掉线的话再来设置定时进程。
ps T
可以查看进程号,现在的PID是27928
2021.3.11
上午来到实验室发现网络断开了,所以还得设置定时进程。但是在脚本里面怎么判断网络连通性,我还得查一下资料。
程序超时报错:
Traceback (most recent call last):
File "drcom_tea.py", line 568, in <module>
main()
File "drcom_tea.py", line 565, in main
keep_alive2(SALT,package_tail,password,server)
File "drcom_tea.py", line 240, in keep_alive2
data, address = s.recvfrom(1024)
socket.timeout: timed out
执行程序绝对路径:
/opt/home/root/python27/bin/python2.7 /opt/home/root/drcom_tea.py &
- 编辑 crontab 文件:
$ crontab -e
* * * * * /opt/home/root/python27/bin/python2.7 /opt/home/root/drcom_tea.py
以上表示每分钟运行一次
*/10 * * * * /opt/home/root/python27/bin/python2.7 /opt/home/root/drcom_tea.py
以上表示每10分钟运行一次