Kjo është pjesa përfundimtare e artikullit, këtu është fillimi
Herën e kaluar kam shkruar për mënyrën se si realizova monitorimin e pajisjeve, tani do të flasim për menaxhim. Në diskutimet me "teknikët" nga ana e Klientit, shpesh e has limited perception over capabilities of such small devices (with low memory resources and performance), many believe that "the maximum we will need is to send a reboot, for something more serious - we will send a team."
Por praktika tregon se kjo nuk është plotësisht e vërtetë. Ja një listë e vogël e detyrave tipike:
- Diagnostikimi dhe zgjidhja e problemeve në rrjet. Pas portit ethernet të router-it tuaj zakonisht "jeton" një pajisje tjetër, e cila ka një adresë të brendshme ip. Ndonjëherë, ajo mund(duhet) të "ping-ojë". Ose menaxhimi i tunelit - nëse në router-in që punon me modem 3G papritur nuk ngritet tuneli, por ne e shohim vetë router-in.
- Mirëmbajtja sistemike. Përditësimi i firmware-it, përmirësimi i skripteve shërbyese.
- Ekvilibristika. Kjo mund tĂ« quhet "devijime", por koncepti i "ekvilibristikĂ«s" siç citoj, "aftĂ«sia e artistit cirk tĂ« mbajĂ« ekuilibrin nĂ« njĂ« pozicion tĂ« paqĂ«ndrueshĂ«m tĂ« trupit" â pĂ«rshtatet mĂ« mirĂ«. Situata tĂ« tilla lindin pĂ«r shkak tĂ« kufizimeve tĂ« buxhetit tĂ« klientit. MĂ« poshtĂ« kam sjellĂ« disa shembuj, por pasi nuk kanĂ« lidhje tĂ« drejtpĂ«rdrejtĂ« me temĂ«n e rrĂ«fimit, i kam shkruar nĂ« shĂ«nimet
Monitorimi i Wi-FiTema që ka qenë në modë për pesë vitet e fundit kryesisht mes rrjeteve federale të shitjeve. Ju ecni ngadalë nëpër sallat e tregtisë, ndërsa telefoni juaj mobil me Wi-Fi të aktivizuar përpiqet të "krijojë lidhje" me ndonjë rrjet dhe me rregull dërgon paketa kërkese Probe, të cilat mund të analizohet për të llogaritur: sa shpesh vini në këtë dyqan, nëpër cilat trajektorish ecni etj. Pastaj të dhënat mblidhen, analizohet, vizatohen hartat termike dhe menaxherët për këto figura "sigurojnë" para nga drejtuesit ose investitorët. Mirë, ndërkohë... "nuk ka para, por ju qëndroni...", dhe rezultati (real) duhet të tregojë, aktivizohet kënga e vjetër e mirë "Po-po, pastaj sigurisht ne do të vendosim ciskat dhe gjithçka që dëshironi, por tani duhet të tregojmë rezultatet për Klientin! Për më tepër, harruam të themi, Klienti lejoi pajisjet tona të lidhen me hotspot-in e tij përmes Wi-Fi, por në kushte të përbashkëta, ndjeshëm si klientë të mysafirëve". Dhe kështu na duhet të krijojmë routera ekvilibristë - ngrihen disa subinterface WiFi, njëri prej të cilëve lidhet me hotspot-in, ndërsa tjetri monitoron ambientin, nervozisht shkarkon rezultatet tcpdump në vete, më pas përmbajtjen e skedarit e paketizon në një arkiv dhe me rrezik për t'u shqetësuar nga "tepria" përpiqet të hedhë përmbajtjen në serverin ftp. Nuk është çudi që routeri ekvilibrist shpesh "shin" dhe duhet ndonjëherë të "riaktivizohet" nga distanca.
RadiusKëtu është më e lehtë të përshkruhet situata me këtë pohim të klientit: "Ne duam një rrjet të decentralizuar hotspotësh, të cilët do të punonin me pajisje të cilat modelin e të cilave nuk e dimë paraprakisht, përmes kanaleve, por nuk dimë se cilat. Ah, harrojmë të themi, ne jo vetëm duam të tregojmë reklama klientëve, por gjithashtu të analizojmë gjithçka përreth vendit të vendosjes së hotspot-it. Jo, nuk e dimë ende pse, por do ta gjejmë një arsye, mos dyshoni, ne e kemi arritur këtë ide"
Dhe nuk duhet harruar se për shkak të një numri të madh të rrethanave të papërcaktuara paraprakisht, menaxhimi duhet të realizohet në kushte jostandarde, kur nuk mund të lidhemi drejtpërdrejt me routerin përmes ip-së: port dhe jemi të detyruar të presim aktivizimin nga ai. Nëse e shohim nga një këndvështrim më të gjerë, dialogu midis serverit dhe routerit mund të paraqitet kështu:
- Router: përshëndetje. unë jam router-i i tillë, a ka ndonjë detyrë për mua?
- Server: routeri i tillë të kam regjistruar, që je aktiv. Ja detyra: më trego rezultatin e komandës ifconfig?
- Router: përshëndetje. Unë jam routeri i tillë, herën e kaluar kërkove ta tregoj rezultatin e ifconfig, ja ai. A ka ndonjë detyrë për mua?
- Server: routeri i tillë të kam regjistruar, që je aktiv. S'ka detyra për ty.
Pyetja mĂ« interesante: si mund tĂ« dĂ«rgojĂ« njĂ« router i largĂ«t njĂ« sasi tĂ« caktuar informacioni? NĂ« pjesĂ«n e kaluar pĂ«rshkrova qĂ« pĂ«r shkak tĂ« kufizimeve tĂ« burimeve, ka vetĂ«m wget tĂ« "shkurtuar", i cili punon vetĂ«m pĂ«rmes GET dhe asgjĂ« mĂ« shumĂ«, nuk ka as FTP klient, as curl. NĂ« tĂ« vĂ«rtetĂ«, na nevojitet njĂ« mĂ«nyrĂ« universale, pavarĂ«sisht nga veçoritĂ« e ndĂ«rtimit tĂ« imazhit. U ndala nĂ« pĂ«rdorimin e wget. NĂ« tĂ« vĂ«rtetĂ«, si "u ndala" â thjesht nuk kisha zgjedhje đ
Menjëherë një sqarimZgjidhja ime për menaxhim është e efektshme, jo shumë e kufizuar dhe jam i sigurt - e gabuar, madje edhe nëse i përshtatet shumicës së klientëve të mi. Si mund të bëhej ndryshe - të shkruhej një utilitar të vogël, që dërgon të dhëna binare përmes portit 80 me POST. Ta inkorporosh në firmware-in e routerit dhe me ndihmën e bash-it të adresohet. Por realiteti është ky: a) duhet të jetë e shpejtë b) ndoshta duhet bërë gjithçka në "zooparkun" ekzistues të routerëve c) "mos e dëmto!" - nëse routeri punon dhe përmbush detyra të tjera, përpiqu të bësh ndryshime që nuk do të prekin funksionalitetin ekzistues.
Të kalojmë në zbatim. Le të supozojmë se klienti juaj dëshiron që nga zabbix, të rindezë routerin lehtësisht dhe pa ndonjë problem, "me një klik miu". Sot do të fillojmë përshkrimin e zbatimit me zabbix.
Në menunë "Administrim" -> "Skripte" shtojmë një skript të ri. E quajmë "Rindez", si komandë shkruajmë "php /usr/share/zabbix/reboot.php {HOST.HOST}"

Pastaj: Menuja "Monitorim" -> "Të dhënat e fundit" -> "Klikim me të djathtën mbi nyjën e nevojshme të rrjetit". Kështu do të duket menunë pas shtimit të skriptit.

Saktësisht, skripti reboot.php e vendosim në direktorinë /usr/share/zabbix (në ju mund të jetë ndryshe, unë përdor direktorinë rrënjësore të zabbix-it).
Sqarim pĂ«r sigurinĂ«PĂ«r sqarimin nĂ« skript, unĂ« pĂ«rdor vetĂ«m ID-nĂ« e routerit, por nuk pĂ«rdor fjalĂ«kalimin. NĂ« versionin e punĂ«s, kjo nuk rekomandohet! Pse e bĂ«ra kĂ«tĂ«: sepse Ă«shtĂ« njĂ« pyetje e madhe â ku t'i ruajmĂ« fjalĂ«kalimet pĂ«r routerat? NĂ« vetĂ« Zabbix nĂ« "tĂ« dhĂ«nat inventar?" PraktikĂ« e kundĂ«rthĂ«nĂ«shme. Si njĂ« mundĂ«si: kufizoni aksesin nga jashtĂ« nĂ« vetĂ« skedarin reboot.php
Skedari reboot.php
set_charset("utf8");
// "Dërgojmë" komandën reboot duke ndryshuar fushën task në tabelën users. Në fushën task mund të dërgojmë çdo komandë.
$sql_users=$conn->prepare("UPDATE users SET task='reboot' WHERE id=? AND status='active';");
$sql_users->bind_param('s', $user);
$sql_users->execute();
$sql_users->close();
?>Në substancë, kjo është gjithçka. Pyetja e hapur mbetet "si të marrim rezultatin e ekzekutimit të komandës nga pajisja". Le të shqyrtojmë problemin duke marrë si shembull komandën ifconfig. Një komandë e tillë mund të dërgohet pajisjes:
message=`ifconfig`; wget "http://xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php?u=user&p=password!&m=$message" -O /tmp/out.txt, ku:
message=`ifconfig` â ne i caktuam variablĂ«s $message rezultatin e daljes nga komanda ifconfig
wget " â skripti ynĂ« a.php, qĂ« regjistron routerat dhe pranon mesazhe nga ata
u=user&p=password!&m=$message â kredencialet dhe vlera e variablĂ«s sĂ« pyetjes m â i cakton pĂ«rmbajtjen e variablĂ«s $message
-O /tmp/out.txt â dalja nĂ« skedarin /tmp/out.txt nĂ« kĂ«tĂ« rast nuk na nevojitet, por nĂ«se nuk e caktoni kĂ«tĂ« parametrin, wget nuk funksionon
Pse kjo funksionon keqSepse kjo Ă«shtĂ« njĂ« vrimĂ« potenciale nĂ« siguri. Gabimi mĂ« i padĂ«mshĂ«m qĂ« mund tĂ« ndodhĂ« â Ă«shtĂ« nĂ« rastin kur nĂ« daljen e komandĂ«s tuaj ndodhet ndonjĂ« simbol â&â. Prandaj duhet tĂ« filtrohet gjithçka qĂ« dĂ«rgohet nga routerat dhe gjithçka qĂ« vjen nĂ« server. Po, mĂ« vjen turp, me tĂ« vĂ«rtetĂ«. NĂ« mbrojtjen time mund tĂ« shkruaj vetĂ«m â se i gjithĂ« artikulli Ă«shtĂ« dedikuar mĂ«nyrĂ«s sĂ« menaxhimit tĂ« routerave me firmware tĂ« paparashikueshĂ«m paraprakisht, me kanale lidhjeje tĂ« paparashikueshme paraprakisht.
Dhe kështu kam bërë një plan për të ardhmen: ende nuk kam arritur të kuptoj si të pasqyroj rezultatet (p.sh. rezultatin e ekzekutimit të komandës) që vijnë në server duke përdorur mjete standarde të Zabbix.
Ju kujtoj se të gjitha burimet mund të merren nga repozita Git, në adresën:
Burimi: habr.com
