Nagios Plugin - Lines auswerten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pullistricker
User
Beiträge: 3
Registriert: Dienstag 30. November 2010, 10:23

Hallo Zusammen,

ich möchte ein Nagios Plugin (aus check_sap.pl soll check_sap.py werden) schreiben und bin schon recht weit - jetzt hänge ich aber an der Stelle wo ich die Ausgabe des aufgerufenen Programms auswerten soll...

ich rufe das das Programm so auf

Code: Alles auswählen

output = os.popen(command,"r")
als Ausgabe bekomme ich folgendes...

Code: Alles auswählen

output = os.popen(command,"r")
line = 1
while line:
    line = output.readline()
    if not line: break
    print line

AUSGABE:

Code: Alles auswählen

SAP System Information

-----------------------------------------------





Destination            dbk22host_K22_00



Host                   dbk22host

System ID              K22

Database               K22

DB host                dbk22host

DB system              ORACLE



SAP release            701

SAP kernel release     701



RFC Protokoll          011

Characters             4103 (UNICODE PCS=2)

Integers               LIT

Floating P.            IE3

SAP machine id           390



Timezone                 3600 (Daylight saving time)

Abfragen muss ich dann in etwa so...

if host = 2. Argument in Zeile mit HOST und SID = 2. Argument in Zeile mit System ID....

hab schonwas probiert mit split() - aber komm da leider nicht weiter...

kann mir hier jemand helfen...?
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Code: Alles auswählen

splits = line.split()
if splits[0] == "Host":
 ...
BlackJack

@pullistricker: Du solltest statt `os.popen()` besser das `subprocess`-Modul verwenden. Und anstelle von dieser komischen, umständlichen ``while``-Schleife und `readline()` besser *direkt* über die Zeilen mit einer ``for``-Schleife iterieren. Ebenfalls genauer anschauen solltest Du Dir die Ausgabe von dem externen Programm wie die aufgebaut ist, also zum Beispiel ob die erste Spalte von der zweiten durch Tabulatoren getrennt ist, oder ob die zweite Spalte immer an einem bestimmten Versatz in der Zeile beginnt. Denn dann könnte man erst einmal ganz generisch einen Parser schreiben der diese Tabelle in ein Wörterbuch überführt, das die Werte der ersten Spalte auf die der zweiten abbildet.
Antworten