Perutusan
Untuk keperluan peribadi di rumah, saya memasang VSphere, di mana saya menjalankan penghala maya dan pelayan Ubuntu sebagai pelayan media dan sekumpulan barangan lain, dan pelayan ini harus boleh diakses dari Internet. Tetapi masalahnya ialah pembekal saya memberikan data statik untuk wang, yang sentiasa boleh digunakan untuk tujuan yang lebih berguna. Oleh itu, saya menggunakan gabungan ddclient + cloudflare.
Semuanya baik-baik saja sehingga ddclient berhenti berfungsi. Selepas melihat-lihat sedikit, saya menyedari bahawa masanya telah tiba untuk tongkat dan basikal, kerana ia mengambil terlalu banyak masa untuk mencari masalah. Akhirnya, semuanya bertukar menjadi daemon kecil yang hanya berfungsi, dan saya tidak memerlukan apa-apa lagi.
Jika ada yang berminat, selamat datang ke kucing.
Alat yang digunakan dan cara "ia" berfungsi
Jadi perkara pertama yang saya temui di laman web cloudflare ialah segala-galanya yang perlu anda ketahui
Secara umum, pembalut itu diambil sebagai asas
Saya mengambil salah satu contoh untuk mengemas kini DNS dan menambah penggunaan fail konfigurasi dan keupayaan untuk mengemas kini beberapa rekod A dalam zon dan, sudah tentu, bilangan zon yang tidak terhad.
Logiknya adalah seperti berikut:
- Skrip menerima senarai zon daripada fail konfigurasi dan menggelungkannya
- Dalam setiap zon, skrip melingkari setiap rekod DNS jenis A atau AAAA dan menyemak IP Awam dengan rekod itu
- Jika IP berbeza, ia mengubahnya; jika tidak, ia melangkau lelaran gelung dan beralih ke yang seterusnya.
- Tertidur untuk masa yang dinyatakan dalam konfigurasi
Pemasangan dan konfigurasi
Ia mungkin mungkin untuk membuat pakej .deb, tetapi saya tidak mahir dalam hal ini, dan ia tidak begitu sukar.
Saya menerangkan proses dengan terperinci dalam README.md di
Tetapi sekiranya berlaku, saya akan menerangkannya dalam bahasa Rusia secara umum:
- Pastikan anda memasang python3 dan python3-pip, jika tidak, pasangkannya (pada Windows, python3-pip dipasang bersama Python)
- Klon atau muat turun repositori
- Pasang kebergantungan yang diperlukan.
python3 -m pip install -r requirements.txt
- Jalankan skrip pemasangan
Untuk Linux:chmod +x install.sh sudo ./install.sh
Untuk Windows: windows_install.bat
- Edit fail konfigurasi
Untuk Linux:sudoedit /etc/zen-cf-ddns.conf
Untuk Windows:
Buka fail zen-cf-ddns.conf dalam folder tempat anda memasang skrip.
Ini adalah fail JSON biasa, tetapan tidak rumit - Saya secara khusus menerangkan 2 zon berbeza di dalamnya sebagai contoh.
Apa yang ada di sebalik pemasang?
install.sh untuk Linux:
- Pengguna dicipta untuk menjalankan daemon, tanpa membuat direktori rumah dan tanpa keupayaan untuk log masuk.
sudo useradd -r -s /bin/false zen-cf-ddns
- Fail log dibuat dalam /var/log/
- Jadikan pengguna yang baru dibuat sebagai pemilik fail log
- Fail disalin ke tempatnya (konfigurasi dalam /etc, fail boleh laku dalam /usr/bin, fail perkhidmatan dalam /lib/systemd/system)
- Perkhidmatan ini diaktifkan
windows_install.bat untuk Windows:
- Menyalin fail boleh laku dan konfigurasi ke folder yang ditentukan pengguna
- Mencipta tugas dalam penjadual untuk menjalankan skrip pada permulaan sistem
schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart
Selepas menukar konfigurasi, skrip perlu dimulakan semula; di Linux semuanya mudah dan biasa:
sudo service zen-cf-ddns start
sudo service zen-cf-ddns stop
sudo service zen-cf-ddns restart
sudo service zen-cf-ddns status
untuk Windows anda perlu mematikan proses pythonw dan menjalankan semula skrip (saya terlalu malas untuk menulis perkhidmatan untuk Windows dalam C#):
taskkill /im pythonw.exe
Ini melengkapkan pemasangan dan konfigurasi, nikmati untuk kesihatan anda.
Bagi mereka yang ingin melihat kod Python yang tidak begitu cantik, ini dia
MIT berlesen, jadi lakukan dengan perkara ini apa yang anda mahu.
PS: Saya faham bahawa ia ternyata menjadi sedikit tongkat, tetapi ia melakukan tugasnya dengan kuat.
UPD: 11.10.2019/17/37 XNUMX:XNUMX
Saya menemui 1 lagi masalah, dan jika seseorang memberitahu saya cara menyelesaikannya, saya akan sangat berterima kasih.
Masalahnya ialah jika anda memasang dependencies tanpa sudo python -m pip install -r ..., maka modul tidak akan kelihatan daripada pengguna perkhidmatan, dan saya tidak mahu memaksa pengguna memasang modul di bawah sudo, dan ini adalah tidak betul.
Bagaimana untuk menjadikannya kelihatan cantik?
UPD: 11.10.2019/19/16 XNUMX:XNUMX Masalah telah diselesaikan menggunakan venv.
Terdapat beberapa perubahan. Keluaran seterusnya akan dibuat dalam beberapa hari akan datang.
Sumber: www.habr.com