Parathënie
PĂ«r nevojat e mia personale nĂ« shtĂ«pi ngrita VSphere, nĂ« tĂ« cilin kam njĂ« ĐŒĐ°ŃŃŃŃŃОзаŃĐŸŃ virtual dhe njĂ« server Ubuntu si server mediatik dhe shumĂ« gjĂ«ra tĂ« tjera tĂ« kĂ«ndshme, dhe ky server duhet tĂ« jetĂ« i qasshĂ«m nga Interneti. Por problemi Ă«shtĂ« se ofruesi im ofron statikĂ« pĂ«r para, tĂ« cilat gjithmonĂ« mund tĂ« pĂ«rdoren pĂ«r diçka mĂ« tĂ« dobishme. Prandaj kam pĂ«rdorur kombinimin ddclient + cloudflare.
Gjithçka ishte mirë derisa ddclient nuk funksionoi më. Pasi e shqyrtova pak, kuptova se kishte ardhur koha për zgjidhje dhe rrota, pasi po humbisja shumë kohë me gjetjen e problemit. Në fund, gjithçka përfundoi në një demon të vogël, që thjesht punon, dhe më shumë nuk më nevojitet.
KĂ«do qĂ« e interesohet â mirĂ«seardhĂ«t nĂ«n kat.
Mjetet e përdorura dhe si funksionon «kjo»
Pra, hapi i parë ishte të marr informacionin nga faqja cloudflare, gjithçka që duhet të di për . Dhe isha duke e realizuar gjithçka në Python (pas njohjes me Python, gjithnjë e më shpesh e përdor për disa detyra të thjeshta ose kur duhet të bëj një prototip shpejt), papritmas u ndesha me një realizim gati të gatshëm.
Në tërësi, u mor një wrapper .
Mora një nga shembujt për azhurnimin e DNS dhe shtova përdorimin e një skedari konfigurations dhe mundësinë për të azhurnuar disa A rekorde brenda një zone dhe, sigurisht, një numër të pakufizuar zonash.
Logjika është si vijon:
- Skripti merr nga skedari i konfigurimit një listë zonash dhe kalon nëpër to në një cikël
- Në çdo zonë, skripti kalon nëpër çdo rekord DNS të tipit A ose AAAA dhe krahasohet IP Publik me rekordin
- NĂ«se IP ndryshon â e ndryshon, nĂ«se jo kalon iteracionin e ciklit dhe kalon nĂ« tĂ« ardhshmen
- Futet në gjumë për kohëzgjatjen e specifikuar në konfigurim
Instalimi dhe konfigurimi
Mund të ishin bërë edhe një paketë .deb, por unë nuk jam i fortë në këtë, dhe asgjë nuk është aq e komplikuar.
Procesi është përshkruar mjaft në detaje në README.md në .
Por në rastin më të keq do të përshkruaj në rusisht në mënyrë të përgjithshme:
- Sigurohuni qĂ« keni instaluar python3 dhe python3-pip, nĂ«se jo â instaloni (nĂ« Windows python3-pip Ă«shtĂ« instaluar sĂ« bashku me Python)
- Klononi ose shkarkoni repositorin
- Instaloni varësitë e nevojshme.
python3 -m pip install -r requirements.txt - Shkoni për të ekzekutuar skriptin e instalimit
Për Linux:chmod +x install.sh sudo ./install.shPër Windows: windows_install.bat
- Redaktoni skedarin e konfigurimit
Për Linux:sudoedit /etc/zen-cf-ddns.confPër Windows:
Hapni skedarin zen-cf-ddns.conf në dosjen ku keni instaluar skriptin.
Ky Ă«shtĂ« njĂ« skedar zakonisht JSON, pĂ«r konfigurimet nuk ka asgjĂ« tĂ« komplikuar â kam pĂ«rshkruar si shembull 2 zona tĂ« ndryshme nĂ« tĂ«.
ĂfarĂ« fshihet pas instaluesve?
install.sh për Linux:
- Krijohet një përdorues për të ekzekutuar demonin, pa krijuar një direktori shtëpie dhe mundësi për t'u kyçur.
sudo useradd -r -s /bin/false zen-cf-ddns - Krijohet një skedar për të regjistruar log-un në /var/log/
- E bëjmë pronar të skedarit të log-ut përdoruesin e sapokrijuar
- Skedarët kopjohen në vendet e tyre (konfiguimi në /etc, skedari ekzekutues në /usr/bin, skedari i shërbimit në /lib/systemd/system)
- Aktivizohet shërbimi
windows_install.bat për Windows:
- Kopjon skedarin ekzekutues dhe skedarin e konfigurimit në dosjen e caktuar nga përdoruesi
- Krijon një detyrë në planifikues për të ekzekutuar skriptin në fillim të sistemit
schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart
Pasi të ndryshoni konfigurimin, skripti duhet të rinitet, në Linux gjithçka është e thjeshtë dhe e zakonshme:
sudo service zen-cf-ddns start
sudo service zen-cf-ddns stop
sudo service zen-cf-ddns restart
sudo service zen-cf-ddns status
për Windows do të duhet të ndaloni procesin pythonw dhe të rilançoni skriptin (më vjen shumë keq, por nuk dua të shkruaj një shërbim për Windows në C#):
taskkill /im pythonw.exeMe këtë përfundojnë instalimi dhe konfigurimi, shijoni shëndetshëm.
Për ata që duan të shikojnë kodin e pakëndshëm të Python, ja .
Licenca MIT, kështu që bëni me këtë mirë çfarë të doni.
P.S.: E kuptoj që doli pak e çrregullt, por përball të detyrës e bën mirë.
UPD: 11.10.2019 17:37
Gjeta njĂ« problem tjetĂ«r, dhe nĂ«se dikush tregon mĂ«nyrĂ«n pĂ«r ta zgjidhur â do tĂ« isha shumĂ« mirĂ«njohĂ«s.
Problemi Ă«shtĂ« se nĂ«se instaloni varĂ«sitĂ« pa sudo python -m pip install -r âŠ, modulat nuk do tĂ« jenĂ« tĂ« dukshme nga pĂ«rdoruesi i shĂ«rbimit, dhe nuk do tĂ« dĂ«shiroja tâi detyroja pĂ«rdoruesit tĂ« instalojnĂ« modulĂ« me sudo, pĂ«r mĂ« tepĂ«r nuk Ă«shtĂ« e drejtĂ«.
Si të bëhet siç duhet, që të duket bukur?
UPD: 11.10.2019 19:16 Problemi është zgjidhur duke përdorur venv.
Ishte disa ndryshime. Një version i ri do të dalë shumë shpejt.
Burimi: habr.com
