前言

为了满足个人需求,他提出了VSphere,我在其上旋转了一个虚拟路由器和一个Ubuntu服务器作为媒体服务器和一堆好东西,并且应该可以从Internet访问该服务器。 但是问题是我的提供程序提供了静态的货币,您总是可以找到一个更有用的应用程序。 因此,我使用了一堆ddclient + cloudflare。
一切正常,直到ddclient停止工作。 经过一番挖掘后,我意识到拐杖和自行车的时间已经到了,因为开始花费太多时间才能发现问题。 最后,一切都变成了一个可以正常工作的小恶魔,但我不再需要它了。
谁在乎-欢迎猫。
二手工具及其运作方式
因此,我在cloudflare网站上了解的第一件事是您需要了解的有关
API的所有信息 。 当我突然遇到几乎准备就绪的实现时,我已经坐下来用Python实现一切(了解Python之后,我在一些简单的任务或需要快速制作原型的时候更多地使用它)。
通常,将包装器
python-cloudflare作为基础。
我举了一个用于更新DNS的示例,并添加了配置文件的使用以及能够更新区域(当然也包括无限数量的区域)中的多个A记录的功能。
逻辑如下:
- 该脚本从配置文件接收区域列表,并在循环中通过它们
- 在每个区域中,脚本循环遍历类型A或AAAA的每个DNS记录,并用记录检查公用IP
- 如果IP不同,请进行更改;否则,请跳过循环的迭代并继续进行下一个
- 在配置中指定的时间入睡
安装与设定
可能可以制作一个.deb软件包,但我对此并不强,也没有那么复杂。
我
在存储库页面的 README.md中详细描述了该过程。
但是以防万一,我将用俄语概括地描述:
- 确保已安装python3和python3-pip,否则请安装(在Windows上,python3-pip与Python一起安装)
- 克隆或下载存储库
- 安装必要的依赖项。
python3 -m pip install -r requirements.txt
- 运行安装脚本
对于Linux:
chmod +x install.sh sudo ./install.sh
对于Windows:windows_install.bat
- 编辑配置文件
对于Linux:
sudoedit /etc/zen-cf-ddns.conf
对于Windows:
在安装脚本的文件夹中打开zen-cf-ddns.conf文件。
这是一个普通的JSON文件,设置没有什么复杂的-我专门以示例的方式描述了其中的2个不同区域。
安装程序背后隐藏着什么?
Linux的install.sh:
- 创建用户以启动守护程序,而无需创建主目录和登录功能。
sudo useradd -r -s /bin/false zen-cf-ddns
- 在/ var / log /中创建一个日志文件
- 我们成为新创建用户的日志文件的所有者
- 文件复制到其位置(/ etc中的配置,/ usr / bin中的可执行文件,/ lib / systemd / system中的服务文件)
- 服务已激活
Windows的windows_install.bat:
- 将可执行文件和配置文件复制到用户指定的文件夹
- 在调度程序中创建任务以在系统启动时运行脚本
schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart
更改配置后,需要重新启动脚本,在Linux中,一切都很简单和熟悉:
sudo service zen-cf-ddns start sudo service zen-cf-ddns stop sudo service zen-cf-ddns restart sudo service zen-cf-ddns status
对于Windows,您将必须终止pythonw进程并重新运行脚本(我很懒于在Windows下用C#编写服务):
taskkill /im pythonw.exe
在此安装和配置完成之后,请使用您的健康状况。
对于那些不想看最漂亮的Python代码的人,这里是
GitHub上的
存储库 。
MIT许可证,因此您可以使用此产品做任何想要的事情。
PS:我知道事实证明它有些拐杖,但要一头扎实地应付任务。
UPD:10/10/2019 17:37
我发现了另一个问题,如果有人告诉我如何解决,我将非常感激。
问题是,如果您在不使用sudo python -m pip install -r ...的情况下安装依赖项,则从服务用户下将看不到模块,但是我不想强迫用户在sudo下安装模块,这是不正确的。
如何使其美丽?
UPD:10/11/2019 19:16使用venv解决了问题。
原来有一些变化。 下一天将发布。