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.
Izejas koda pārbaude
Izejas kodi tiek pārbaudīti saskaņā ar šādiem nosacījumiem:
- Tikai pielāgotiem brīdinājumu skriptiem, attālinātām komandām un lietotāju skriptiem, kas tiek izpildīti Zabbix serverī un Zabbix starpniekserverī.
- Jebkurš izejas kods, kas atšķiras no 0, tiek uzskatīts par izpildes kļūmi.
- Neveiksmīgu izpildes reižu standarta kļūdu izvades un standarta izvades saturs tiek apkopots un ir pieejams lietotāja saskarnē (kur tiek parādīts izpildes rezultāts).
- Papildu žurnāla ieraksts var tikt izveidots attālinātām komandām, kas izpildītas Zabbix aģentā/starpniekserverī, iespējojot parametru LogRemoteCommands aģenta/starpniekservera konfigurācijā.
Iespējamie ziņojumi lietotāja saskarnē un žurnāla ieraksti neveiksmīgām komandām/skriptiem:
- Neveiksmīgu izpildes reižu standarta kļūdu izvades un standarta izvades saturs (ja tāds ir).
- "Process exited with code: N." (ja izvade ir tukša un izejas kods nav vienāds ar 0).
- "Process killed by signal: N." (ja procesu pārtrauc signāls, tikai Linux vidē).
- "Process terminated unexpectedly." (ja process tiek pārtraukts nezināmu iemeslu dēļ).