daspossum
Goto Top

Bash Case für Nagios

Hallo zusammen,

ich möchte mir ein Kleines Plugin für die Auswertung der Festplatten für ältere Linux- Server schreiben. Es funktioniert auch soweit, nur im case scheint es Probleme zu geben er kennt nur Ok oder UNKNOW.
#!/bin/bash


db=`ssh # "/usr/kps/./db_kps"` 
case $db in
        [1-80]*)
        echo "OK - $db Speicherplatz belegt"  
        exit 0
        ;;
        [81-90])
        echo "WARNING - $db Speicherplatz belegt"  
        exit 1
        ;;
        [91-100])
        echo "CRITICAL - $db Speicherplatz voll!!"  
        exit 2
        ;;
        *)
        echo "UNKNOWN - $db nicht messbar"  
        exit 3
        ;;
esac
hab ich vieleicht den falschen Operator verwendet?
Kommentar vom Moderator Dani am Nov 02, 2015 um 14:14:44 Uhr
Formatierung hinzugefügt.

Content-Key: 287321

Url: https://administrator.de/contentid/287321

Printed on: April 19, 2024 at 00:04 o'clock

Member: Dani
Solution Dani Nov 02, 2015 updated at 14:16:47 (UTC)
Goto Top
Moin,
möchtest du uns noch ein Beispiel geben, wie der Inhalt von $db aussieht?! Macht die Fehlersuche einfacher...


Gruß,
Dani
Member: DasPossum
DasPossum Nov 02, 2015 at 14:21:13 (UTC)
Goto Top
Zu erst filtere ich mir die Festplatte aus:

db=`df -h | grep db | awk '{print $5}'`  

dann bau ich eine SSh Verbindung auf (dazu habe ich die keys ausgetauscht und einen Nagios benutzer erstellt).
im zweiten Schritt wird die Variable dann ins case übernommen und soll das eigentlich diesen durchlaufen.
1- 80% ist ok
81 -90% ist warnung
91 - 100% wird die Platte als kritisch angesehen damit, man sich diese anschaut.
letzteres soll sein, wenn es keine Verbindung zur Platte mehr gibt.
Member: Chonta
Chonta Nov 02, 2015 at 14:30:23 (UTC)
Goto Top
Hallo,

[1-80]*)

mach mal das * weg bitte.
Hast Du schon mit fester Wertübergabe getestet was das Script zurück gibt?

Gruß

Chonta
Member: DasPossum
DasPossum Nov 02, 2015 at 14:35:29 (UTC)
Goto Top
Ja, der Festplattenwert wird richtig übertragen.

Ausgabe ohne Stern:
./db
UNKNOWN - 89% nicht messbar

Wert ist richtig nur springt er im Menü immer zur letzten Ausgabe.

Ausgabe mit Stern:
OK - 89% Speicherplatz belegt
Member: Dani
Dani Nov 02, 2015 updated at 15:04:22 (UTC)
Goto Top
Das Problem wird das Prozentzeichen in der Ausgabe sein. Versuch es mal so:
#!/bin/bash

db=`df -h | grep sda1 | awk '{print $5}' | sed -e 's/[%]//g'`  

case $db in
# 1 bis einschließlich 80
        ([1-9]|[1-7][1-9]|80)
        echo "OK - $db% Speicherplatz belegt"  
        exit 0;;

# 81 bis einschließlich 90
        (8[1-9]|90)
        echo "WARNING - $db% Speicherplatz belegt"  
        exit 1
        ;;

# 91 bis einschließlich 100
        (9[1-9]|100)
        echo "CRITICAL - $db Speicherplatz voll!"  
        exit 2
        ;;

# Default
        *)
        echo "UNKNOWN - $db nicht messbar"  
        exit 3
        ;;
esac
Getestet auf Ubuntu 14.04 LTS mit einer Festplatte.


Gruß,
Dani
Member: DasPossum
DasPossum Nov 02, 2015 at 14:53:09 (UTC)
Goto Top
danke erst mal für die schnelle Hilfe.
Das Problem mit sed ist das die Ausgabe dann leer ist:
$ ./db
UNKNOWN - nicht messbar
Member: Dani
Dani Nov 02, 2015 updated at 14:56:06 (UTC)
Goto Top
Hast du "sda1" entsprechend in Zeile 3 angepasst?


Gruß,
Dani
Member: DasPossum
DasPossum Nov 02, 2015 at 14:57:21 (UTC)
Goto Top
Sorry vergessen, funktioniert superface-smile dankeface-smile