Traps in der Praxis 2
Auswertung von Traps
VIII.3

Traps unter Linux ( ucdsnmp )
Der snmptrapd ist der Trap-Daemon ( Port 162, UDP ). Konfiguration erfolgt in snmptrapd.conf in den Verzeichnissen /usr/share/snmp/, /usr/lib/snmp/ oder $HOME/.snmp/ gemäß man snmp_conf.
Verifiziert wurde das Folgende mit einer Datei /usr/share/snmp/snmptrapd.conf
Konfigurationsmöglichkeit in der snmptrapd.conf
Beim Empfang eines Traps kann eine Aktion (Programm) ausgelöst werden.
Allgemeine Syntax in der Datei snmptrapd.conf :
traphandle default echo "Trap empfangen">>trap.log

traphandler ist die Direktive zur Festlegung der Aktion.
default behandelt alle Traps mit diesem traphandler
echo ... ist die Aktion, dies kann auch ein Script sein.

Es werden (transparent) Variablen an den Traphandler übergeben (STDOUT)
Beispielscript zum Auslesen aller Traphandle-Parameter
control=1   # Steuervariable
while [ "$control" -eq 1 ]
do
    read PARAMETER
    if [ "$PARAMETER" = "" ];then
        control=0 # Schluß, wenn keine Parameter mehr kommen
    fi
    echo $PARAMETER >> /usr/share/snmp/trap.log
done

Beispielausgabe in trap.log ("...."gekürzte alphanumerische OIDs)
     1  speedy.michi.de
     2  192.168.0.100
     3  system.sysUpTime.0 0:1
     4  .iso.org.dod.internet.snmpV2....snmpTrapOID.0 
           .iso.org.dod.internet.snmpV2.snmpModules.snmpMIB.snmpMIBObjects.snmpTraps.linkUp
     5  interfaces.ifTable.ifEntry.ifAdminStatus up
     6  .iso.org.dod.internet.snmpV2....snmpTrapAddress.0 192.168.0.100
     7  .iso.org.dod.internet.snmpV2....snmpTrapCommunity.0 "public"
     8  .iso.org.dod.internet.snmpV2....snmpTrapEnterprise.0 enterprises

 
Starten des snmptrapd
Der Trapservice kann durch einfachen Aufruf
  auf der Kommandozeile gestartet werden. Der
  Standardausgabekanal ist dann der syslog.
  Die Ausgabe kann mit -P auch auf die Shell geleitet werden, das
  Ausgabeformat kann mit -F "..." spezifiziert werden (vgl. man snmptrapd).
Viele Informationen können so geloggt und ausgewertet werden, die beim Traphandler in der snmptrapd.conf nicht vorliegen.
Vorschlag : Ausgabe des snmptrapd in eine Named Pipe leiten und explizit auswerten.
Jul  3 05:23:18 thin1 snmptrapd[1535]: 
192.168.0.100: Cold Start Trap (0) Uptime: 0:00:00.00 Jul 3 05:23:21 thin1 snmptrapd[1535]:
192.168.0.100: Link Up Trap (0) Uptime: 0:00:15.06, interfaces.ifTable.ifEntry.ifIndex.1 = 1 Jul 3 05:23:21 thin1 snmptrapd[1535]:
192.168.0.100: Link Up Trap (0) Uptime: 0:00:15.06, interfaces.ifTable.ifEntry.ifIndex.16777219 = 167772