恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 273|回复: 1

记一次openwrt安装Python环境,并实现阿里云ddns以及校园自动查寝

[复制链接]
发表于 2021-4-30 12:22 | 显示全部楼层 |阅读模式
作为常年浪迹恩山的一个潜水员,常常能从中获取大量有价值的知识,但由于本人太懒,虽技术尚可,但没怎么回馈社区,恰巧最近在折腾树莓派小有心得,便想着动笔写一文供大家参考一二。
先简要介绍一下主要的两个设备,刷了openwrt 19.07小米路由器3G和树莓派4b。
去年曾为了方便,将一个域名从半死不活的管理商中迁出,转入了花生壳的名下,本意是为了直接借用openwrt内ddns对花生壳的良好支持,但根据我长达一年的使用情况来看,openwrt官方的ddns-scripts存在不小的缺陷,其中很明显的一点是在经过一段时间后,ddns无法获取到指定域名的IP,无法与本地IP进行对比判断是否需要更新,导致无限重试(虽然可以设置重试次数,但并不能解决问题,服务down了的结果并没有改变)。
现在恩山上发布的固件大都内置了阿里云ddns功能,而且我在阿里云上也有一台轻量服务器,使用体验不错,且客户支持到位,遂动了在阿里云上买一个域名的想法,38一年,感觉还不错,本想买个自己用惯了的英文ID作为域名,还通过阿里云向所有者去发起了购买申请,结果对方报价3w。。。溜了溜了
买完了域名,那就准备上手了,我是openwrt官方版本的忠实用户,毕竟opkg这种Linux的包管理实在是太方便了,而且里面基本上想要啥有啥,只要你装得下跑得动都可以尝试。美中不足的是,官方luci-app-ddns里没有对于阿里ddns的支持,于是我在GitHub上找了这个
这位大佬制作的ipk安装后可以在luci-app-ddns中直接添加一个选项aliyun.com,直接借用了官方的luci和ddns-scripts,感觉很方便,但很可惜由于源码太久没有更新,或是阿里云更改了接口等因素,这个方法行不通。
于是我不把思路局限在通过openwrt来完成这个工作,便开始研究基于Linux实现ddns的方法。这时候我在GitHub上发现了这个。
我最初并非是在GitHub上发现的这个,而是想通过树莓派运行docker来实现ddns的功能,因为此前正好将树莓派装上了openmediavault作为nas用,在搜索nas相关资料时看到群晖安装docker实现ddns。后因该docker在arm上运行效果欠佳放弃了这个方法,正巧在docker简介里看到了GitHub地址,这一看感觉打开了新世界,下面我对这个项目做一个简单的介绍。
该项目主要基于Python实现,不论Python2或是3都能够正常运行,甚至还能通过pip安装,当然我更推荐直接把整个源码打包下来,pip里面缺了一部分,该项目支持DNSPOD,阿里DNS,cloudflare,华为云等,通过cron实现定时任务,而且还很贴心地内置了自动添加crontab的脚本,而且该项目支持指定配置文件和日志输出到指定文件等功能,实在是非常的方便。
把源码下载下来后,建议cd到run.py的目录进行Python运行,我习惯用Python3,因为GitHub源码里似乎没有提供配置文件模板,而是在首次运行时在当前目录下建立一个,所以建议到达你想要的目录后再运行,省的找不到文件。
关于配置文件的方法,在readme部分里已经非常详细了,我就不在此赘述,有一点是需要注意的,我不清楚作者有没有添加关于一级域名的判断,但我建议为一级域名添加@,配置文件中输入为@.mydomain.cn,可以避免不必要的错误。
等完成配置后,可以运行目录中task.sh,自动添加crontab使其五分钟自动运行一次,但我在此建议修改一下task.sh,将log目录指向到tmp文件夹,否则容易堆积大量的无用日志,对于树莓派来说这点文件体积不算什么,但是对于openwrt来说空间寸土寸金,也可以考虑不输出日志文件。
上述的操作在树莓派和openwrt上皆一致,但由于crontab在两个系统上存在差距,openwrt的crontab格式中不需要指定用户,在时间后直接接上任务即可,不推荐用task.sh进行设置,在提一点注意事项是,指定目录时最好不要有空格,或是用引号把路径包起来。
Openwrt安装Python3,只需要opkg update和opkg install Python3即可,非常的方便。
再来个关于实现校园自动查寝的功能实现,我们学校采用今日校园进行查寝,故我在GitHub上找到这样一个项目。
同样,这个项目基于Python进行开发,把源码下载后往路由器里一上传,改好配置文件,提高一张签到要求的照片,从百度或者高德获取一下经纬度信息填入配置,配合crontab就可以实现全寝的全自动打卡,而这仅需要一个支持Python环境的树莓派或者openwrt路由器,可玩性极高。
上述折腾的乐趣,也正是我们相聚于恩山的基石,上述服务对于路由器资源的消耗也极低,不影响正常的网络功能,支持Python的openwrt可玩性上升了不止一个档次,GitHub上同样具有大量高价值项目,等待我们挖掘,希望这篇文章对大家有所帮助。

发表于 2021-4-30 23:22 来自手机 | 显示全部楼层
你字多,你有理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2021-5-8 16:16

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表