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:

  1. Zabbix (vecākprocess) izveido kanālu saziņai
  2. Zabbix iestata šo kanālu kā izvadi izveidojamajam bērnprocesam
  3. Zabbix izveido bērnprocesu (palaiž komandu/skriptu)
  4. Bērnprocesam tiek izveidota jauna procesu grupa (Unix) vai uzdevums (Windows)
  5. 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.
  6. Ja noildze vēl nav sasniegta, Zabbix gaida, līdz sākotnējais bērnprocess beidz darbu vai iestājas noildze
  7. 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)
  8. Š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.

Iziešanas koda pārbaude

Iziešanas kodi tiek pārbaudīti, 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š iziešanas kods, kas nav 0, tiek uzskatīts par izpildes kļūmi.
  • Standarta kļūdu izvades un standarta izvades saturs neveiksmīgām izpildēm 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 aģents/starpniekserveris.

Iespējamie lietotāja saskarnes ziņojumi un žurnāla ieraksti neveiksmīgām komandām/skriptiem:

  • Standarta kļūdu izvades un standarta izvades saturs neveiksmīgām izpildēm (ja tāds ir).
  • "Process exited with code: N." (ja izvade ir tukša un iziešanas 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ēļ).

Skatiet arī