предговорот
За лични потреби дома, инсталирав VSphere, на кој пуштам виртуелен рутер и Ubuntu сервер како медиумски сервер и еден куп други добрини, а овој сервер треба да биде достапен од Интернет. Но, проблемот е што мојот провајдер дава статични податоци за пари, кои секогаш може да се користат за покорисни цели. Затоа, ја користев комбинацијата ddclient + cloudflare.
Сè беше во ред додека ddclient не престана да работи. Откако малку проѕирнав, сфатив дека дојде време за патерици и велосипеди, бидејќи беше потребно премногу време за да се најде проблемот. На крајот, сè се претвори во мал демон кој само функционира и ништо друго не ми треба.
Ако некој е заинтересиран, добредојде во мачка.
Користени алатки и како функционира „тоа“.
Значи, првото нешто што го дознав на веб-страницата cloudflare е сè што треба да знаете
Во принцип, обвивката беше земена како основа
Зедов еден од примерите за ажурирање на DNS и додадов употреба на конфигурациска датотека и можност за ажурирање на неколку записи A во зона и, се разбира, неограничен број зони.
Логиката е следна:
- Скриптата добива список на зони од конфигурациската датотека и се врти низ нив
- Во секоја зона, скриптата се врти низ секој запис 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 различни зони во него како пример.
Што се крие зад монтери?
install.sh за Linux:
- Корисникот е создаден за да го стартува демонот, без создавање домашен директориум и без можност за најавување.
sudo useradd -r -s /bin/false zen-cf-ddns
- Датотека за евиденција е креирана во /var/log/
- Направете го новосоздадениот корисник сопственик на датотеката за евиденција
- Датотеките се копираат на нивните места (конфигурација во /etc, извршна датотека во /usr/bin, услужна датотека во /lib/systemd/system)
- Услугата е активирана
windows_install.bat за Windows:
- Ја копира извршната и конфигурациската датотека во папка одредена од корисникот
- Создава задача во распоредувачот за извршување на скриптата при стартување на системот
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 код, еве го
МИТ лиценциран, па правете со овие работи што сакате.
P.S.: Разбирам дека испадна малку патерица, но си ја врши работата со тресок.
УПД: 11.10.2019 17:37
Најдов уште 1 проблем и ако некој ми каже како да го решам ќе бидам многу благодарен.
Проблемот е што ако инсталирате зависности без sudo python -m pip install -r ..., тогаш модулите нема да бидат видливи од корисникот на услугата и не би сакал да ги принудувам корисниците да инсталираат модули под sudo, а ова е неточно.
Како да го направите да изгледа убаво?
УПД: 11.10.2019 19:16 Проблемот е решен со помош на venv.
Имаше неколку промени. Следното издание ќе биде во следните неколку дена.
Извор: www.habr.com