前言
為了滿足家庭中的個人需求,我安裝了 VSphere,在其上運行虛擬路由器和 Ubuntu 伺服器作為媒體伺服器以及一堆其他好東西,並且該伺服器應該可以從 Internet 存取。 但問題是我的提供者提供靜態資料是為了錢,這些資料總是可以用於更有用的目的。 因此,我使用了ddclient + cloudflare組合。
一切都很好,直到 ddclient 停止工作。 經過一番探索後,我意識到是時候使用拐杖和自行車了,因為找到問題需要花費太多時間。 最後,一切都變成了一個可以正常工作的小守護進程,我不需要任何其他東西。
如果大家有興趣,歡迎關注貓。
使用的工具以及「它」的工作原理
所以我在 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 進程並重新運行腳本(我懶得用 C# 為 Windows 編寫服務):
taskkill /im pythonw.exe
這樣就完成了安裝和配置,祝您健康。
對於那些想查看不太漂亮的 Python 程式碼的人,這裡是
麻省理工學院授權,所以你可以隨心所欲地使用這些東西。
PS:我知道這有點像拐杖,但它的工作效果非常好。
更新:11.10.2019年17月37日 XNUMX:XNUMX
我又發現了1個問題,如果有人告訴我如何解決它,我將非常感激。
問題是,如果您在沒有 sudo python -m pip install -r ... 的情況下安裝依賴項,那麼服務用戶將看不到這些模組,並且我不想強迫用戶在 sudo 下安裝模組,這是不正確。
怎麼樣才能讓它看起來漂亮呢?
UPD: 11.10.2019/19/16 XNUMX:XNUMX 使用 venv 解決了問題。
發生了一些變化。 下一個版本將在未來幾天內發布。
來源: www.habr.com