Hi,
wie kann ich meinem fertigen nagios bash Script Variablen übergeben bzw. wie sieht der Script Befehl aus?
in der nagios cfg file heisst es ja
1 | $USER1$/check_name -d $ARG1$ |
Wie übergebe ich nun das $ARG1$ meinem Script
LG
![]() Anmeldungsdatum: Beiträge: 99 Wohnort: Engen |
Hi, wie kann ich meinem fertigen nagios bash Script Variablen übergeben bzw. wie sieht der Script Befehl aus? in der nagios cfg file heisst es ja
Wie übergebe ich nun das $ARG1$ meinem Script LG |
||||
Ehemalige
![]() Anmeldungsdatum: Beiträge: 4403 Wohnort: Sachsen |
Den Parameter kannst du in der Service-Konfiguration übergeben: define service { use generic-service host_name <hostname> service_description <beschreibung> check_command check_name!Argument1!Argument2!Argument3... } |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 99 Wohnort: Engen |
Da steht es so auch drin ☺ Was muss in meinem Script stehen damit es das Argument bekommt.
Was muss ich tun damit $1 = Argument ist? |
||||
Ehemalige
![]() Anmeldungsdatum: Beiträge: 4403 Wohnort: Sachsen |
Achso. Du willst also Optionen im Bash-Skript auswerten. Stichwort für dich wäre getopts. Dazu gibt es diesen Abschnitt im Wiki bzw. auch haufenweise Tutorials bei Google. |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 99 Wohnort: Engen |
Wenn das bedeutet das ich so eine Variable von der nagios config in mein Script bekomme? Ich möchte keine Auswahl oder sonstiges.
nur das $1=/dev/sda ist |
||||
Ehemalige
![]() Anmeldungsdatum: Beiträge: 4403 Wohnort: Sachsen |
Ja.
Dann machs nicht. So würde es aussehen, wenn du keine Optionen nutzt, sondern einfach nur ein Argument übergibst: define command { command_name check_name command_line /pfad/zum/skript/skriptname.sh '$ARG1$' } define service { use generic-service host_name <hostname> service_description <beschreibung> check_command check_name!/dev/sda } Anschließend kannst du im Skript mit $1 auf das Argument zugreifen. Innerhalb des Skripts solltest du aber prüfen, ob der übergebene Wert auch plausibel ist:
|
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 99 Wohnort: Engen |
Ich stell mal mein Script und die Config hierein. Vielleicht könntest du mir sagen wo genau der Fehler in meinem Ansatz liegt. Ich will deine Nerven nicht noch länger strapazieren ☺ Ein Buch zum shell programmieren ist schon aufm iPad 😬 Skirpt
Config
|
||||
Ehemalige
![]() Anmeldungsdatum: Beiträge: 4403 Wohnort: Sachsen |
Abgesehen davon, dass das Shell-Skript ziemlich schlampig geschrieben ist (falscher Operator für String-Vergleiche, keine Backticks verwenden, ...), gibt es keinen Fehler im Ansatz. Wo liegt denn dein Problem? Les dir mal den Bash-Skripting-Guide für Anfänger durch 😉 |
||||
Projektleitung
Anmeldungsdatum: Beiträge: 13216 |
Die Shebang-Zeile ist auch falsch.
Ich würde den Vergleich ja mit
👍 |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 99 Wohnort: Engen |
Das "Lob" geht dann wohl an einen Anderen 😛 . Ich hab das Script von einem anderen Programmierer zu 98% übernommen, da es mein aller aller Versuch war.
Ich bekomme immer "check failed" in Nagios. Das hatte ich nur bekommen wenn ich dem Script keine Variable mitgegeben hatte.
Hab nach dem absenden des Posts auch gemerkt ☺ |
||||
Ehemalige
![]() Anmeldungsdatum: Beiträge: 4403 Wohnort: Sachsen |
Das ist keine Ausrede 😛 Das Skript hat ne Hand voll Zeilen, von daher lässt sich das einfach fixen.
Dann musst du debuggen. Als erstes könntest du mitloggen wie das Skript aufgerufen wird: echo "$0" >> /tmp/check_hdparm_log |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 99 Wohnort: Engen |
-bash |
||||
Ehemalige
![]() Anmeldungsdatum: Beiträge: 4403 Wohnort: Sachsen |
Da hab ich mich vertan. Es müsste echo "$@" >> /tmp/check_hdparm_log heißen. $0 beinhaltet nur den Name der Shell bzw. des Shell-Skripts. $@ enthält alle Argumente. |
||||
Projektleitung
Anmeldungsdatum: Beiträge: 13216 |
Ich baue ja auch immer gerne so etwas am Anfang eines Skriptes ein:
Dann kann man Debugging einfach beim Aufruf einschalten, z.B. so:
Man sieht dann die ausgeführten Befehle und die übergebenen Parameter. Und das schöne ist, das wirkt dann auch auf andere Skripte, die entsprechend vorbereitet sind und von dem ersten Skript aufgerufen werden. |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 99 Wohnort: Engen |
Log file ist leer wenn nagios das Script startet. Starte ich das Script per Hand, steht die vorher von mir angegebene Variable drin. |