ich werte mit dem ServerView Operation Manager empfangene Traps mittels Shellskripten aus.
Dazu habe ich als "Destination" in der entsprechenden Regel einen Aufruf meines Shellskripts eingebaut ähnlich folgendem:
Code: Select all
/usr/local/bin/test.sh "$_SRV" "$_TRP" "$_TYP" "$_IPA" "$_CTY" "$_SEV" "$_TIM" "$_IDN" "$_OMS" "$_MIB" "$_SPC" "$_MDL"
In die Variablen (Makros) $_SRV, $_TRP, usw. übergibt ServerView Operation Manager die Bestandteile des Traps: So ist $_SRV z.B. der Name des Servers, von dem der Trap stammt und $_TRP der Meldungstext, der den empfangenen Trap beschreibt. Fujitsu-Dokumentation zu den Variablen/Makros hier: http://manuals.ts.fujitsu.com/file/8382/sv-event-mgr-en.pd
Das 1. Argument meines Shellskriptes ($1) bekommt also den Servernamen übergeben, das 2. ($2) den Meldungstext, usw. Soweit läuft alles ganz gut.
Problematisch wird es, sobald in der Variable $_TRP (also dem Meldungstext) ein Semikolon auftaucht: Passiert das, enthält $1 den Meldungstext nur bis zum Semikolon- und Argumente $2 bis $12 sind lediglich Leerstrings!
Beispiele:
korrekte Übergabe bei Texten ohne Semikolon:
Code: Select all
1=mychassis 2=Communication link failed at the station 6. 3=Link down 4=192.169.64.102 5=public 6=CRITICAL 7=2013-12-17-04.26.18 8=YLE421325K 9=mymms 10=RFC1157.mib 11=0 12=unknown
Problem bei Meldungstexten, die Semikola enthalten:
Code: Select all
1=mychassis 2=Adapter FTS PY SAS RAID Mezz Card 6Gb (0): BBU requires reconditioning 3= 4= 5= 6= 7= 8= 9= 10= 11= 12=
Der korrekte Meldungstext müsste sein:
Code: Select all
Adapter XYZ: BBU requires reconditioning; please initiate a LEARN cycle (Server ABC)
Hat jemand eine Idee bzw. Lösung, wie ich dieses Problem umgehen kann?