9 Komandu izpilde
Zabbix izmanto kopīgu funkcionalitāti ārējām pārbaudēm, lietotāja parametriem, system.run vienumiem, pielāgotiem brīdinājumu skriptiem, attālinātām komandām un globālajiem skriptiem.
Izpildes soļi
Pēc noklusējuma visi skripti Zabbix tiek izpildīti, izmantojot sh čaulu, un noklusējuma čaulu nav iespējams mainīt. Lai izmantotu citu čaulu, var izmantot apiešanas risinājumu: izveidot skripta failu un komandas izpildes laikā izsaukt šo skriptu.
Komanda/skripts tiek izpildīts līdzīgi gan Unix, gan Windows platformās:
- Zabbix (vecākprocess) izveido kanālu saziņai
- Zabbix iestata šo kanālu kā izvadi izveidojamajam bērnprocesam
- Zabbix izveido bērnprocesu (palaiž komandu/skriptu)
- Bērnprocesam tiek izveidota jauna procesu grupa (Unix) vai uzdevums (Windows)
- Zabbix lasa no kanāla, līdz iestājas noildze vai arī neviens vairs neraksta otrā galā (visi turi/failu deskriptori ir aizvērti). Ņemiet vērā, ka bērnprocess var izveidot papildu procesus un beigt darbu pirms tie beidz darbu vai aizver turi/failu deskriptoru.
- Ja noildze vēl nav sasniegta, Zabbix gaida, līdz sākotnējais bērnprocess beidz darbu vai iestājas noildze
- Ja sākotnējais bērnprocess ir beidzis darbu un noildze vēl nav sasniegta, Zabbix pārbauda sākotnējā bērnprocesa izejas kodu un salīdzina to ar 0 (vērtība, kas nav nulle, tiek uzskatīta par izpildes kļūmi, tikai pielāgotajiem brīdinājumu skriptiem, attālinātajām komandām un lietotāju skriptiem, kas izpildīti uz Zabbix serveris un Zabbix starpniekserveris)
- Šajā brīdī tiek pieņemts, ka viss ir pabeigts un viss procesu koks (t.i., procesu grupa vai uzdevums) tiek pārtraukts
Zabbix pieņem, ka komanda/skripts ir pabeidzis apstrādi, kad sākotnējais bērnprocess ir beidzis darbu UN neviens cits process vairs netur atvērtu izvades turi/failu deskriptoru. Kad apstrāde ir pabeigta, visi izveidotie procesi tiek pārtraukti.
Visas dubultpēdiņas un atpakaļvērstās slīpsvītras komandā tiek ekrānētas ar atpakaļvērstajām slīpsvītrām, un komanda tiek ietverta dubultpēdiņās.
Izietas koda pārbaude
Izietas kods tiek pārbaudīts, izmantojot šādus nosacījumus:
- Tikai pielāgotiem brīdinājumu skriptiem, attāliem komandām un lietotāja skriptiem, kas tiek izpildīti Zabbix serverī un Zabbix starpniekserverī.
- Jebkurš izietas kods, kas nav 0, tiek uzskatīts par izpildes kļūmi.
- Neveiksmīgu izpildes gadījumu standarta kļūdu un standarta izvades saturs tiek savākts un ir pieejams lietotāja saskarnē (kur tiek parādīts izpildes rezultāts).
- Papildu žurnāla ieraksts var tikt izveidots attālām komandām, kas izpildītas Zabbix aģentā/starpniekserverī, iespējojot parametru LogRemoteCommands agent/proxy.
Iespējamie lietotāja saskarnes ziņojumi un žurnāla ieraksti neveiksmīgām komandām/skriptiem:
- Neveiksmīgu izpildes gadījumu standarta kļūdu un standarta izvades saturs (ja tāds ir).
- "Process exited with code: N." (ja izvade ir tukša un izietas kods nav 0).
- "Process killed by signal: N." (ja process tika pārtraukts ar signālu, tikai Linux).
- "Process terminated unexpectedly." (ja process tika pārtraukts nezināmu iemeslu dēļ).