Přidání vlastního OID: Porovnání verzí

Z Wiki UnArt Slavičín
Skočit na navigaciSkočit na vyhledávání
(Nová stránka: Každá hodnota v [http://www.samuraj-cz.com/clanek/snmp-simple-network-management-protocol/ SNMP] je jednoznačně identifikována pomocí číselného identifikátoru '''OID - Obje...)
 
Řádek 72: Řádek 72:
====Reference====
====Reference====


[http://www.root.cz/diskuse/187/],[http://net-snmp.sourceforge.net/docs/FAQ.html],[http://www.mail-archive.com/net-snmp-users@lists.sourceforge.net/msg00990.html]
[http://www.root.cz/diskuse/187/],[http://net-snmp.sourceforge.net/docs/FAQ.html],[http://www.mail-archive.com/net-snmp-users@lists.sourceforge.net/msg00990.html],[http://www.samuraj-cz.com/clanek/snmp-simple-network-management-protocol/]

Verze z 14. 4. 2009, 13:22

Každá hodnota v SNMP je jednoznačně identifikována pomocí číselného identifikátoru OID - Object Identifier. OID je tvořeno posloupností čísel oddělených tečkou, tato hodnota vznikne tak, že se vezme OID nadřazeného prvku a doplní se tečka a aktuální číslo. Celá tato stromová struktura je uložena v MIB databázi. Navíc MIB databáze obsahuje jména a popisy jednotlivých hodnot (OID). MIB databáze může být doplněna o další hodnoty pomocí části struktury uložené v MIB souboru.

Příkladem OID může být třeba hodnota 1.3.6.1.2.1.2.2.1.6.1, které odpovídá textová verze z MIB databáze iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifPhysAddress.

Jak přidělit vlastnímu OID skript?

Do /etc/snmp/snmpd.conf přidáme rádek ve tvaru

pass [OID] /bin/sh /usr/local/bin/muj_skript.sh

Příklad:

pass .1.3.6.1.4.1.2021.255 /bin/sh /tmp/passtest.sh

kde passtest.sh má následující obsah:

#!/bin/sh -f

PATH=$PATH:/bin:/usr/bin:/usr/ucb

PLACE=".1.3.6.1.4.1.2021.255"
REQ="$2"

if [ "$1" = "-s" ]; then
  echo $* >> /tmp/passtest.log
  exit 0
fi

if [ "$1" = "-n" ]; then
  case "$REQ" in
    $PLACE)      RET=$PLACE.1 ;;
    $PLACE.1)    RET=$PLACE.2.1 ;;
    $PLACE.2.1)  RET=$PLACE.2.2 ;;
    $PLACE.2.2)  RET=$PLACE.3 ;;
    $PLACE.3)    RET=$PLACE.4 ;;
    $PLACE.4)    RET=$PLACE.5 ;;
    $PLACE.5)    RET=$PLACE.6 ;;
    *)           exit 0 ;;
  esac
else
  case "$REQ" in
    $PLACE)    exit 0 ;;
    *)         RET=$REQ ;;
  esac
fi

echo "$RET"
case "$RET" in
  $PLACE.1) echo "string"; echo "life the universe and everything"; exit 0 ;;
  $PLACE.2.1) echo "integer"; echo "42"; exit 0 ;;
  $PLACE.2.2) echo "objectid"; echo ".1.3.6.1.4.42.42.42"; exit 0 ;;
  $PLACE.3) echo "timeticks"; echo "363136200"; exit 0 ;;
  $PLACE.4) echo "ipaddress"; echo "127.0.0.1" ;;
  $PLACE.5) echo "counter"; echo "42"; exit 0 ;;
  $PLACE.6) echo "gauge"; echo "42"; exit 0 ;;
  *) echo "string"; echo "ack... $RET $REQ"; exit 0 ;;
esac


Pro otestování spustíme

snmpwalk -O n -v 1 -c public <hostname nebo ip adresa snmp stroje> .1.3.6.1.4.1.2021.255

a výsledek by měl vypadat nějak takhle:

enterprises.ucdavis.255.1 = "life the universe and everything"
enterprises.ucdavis.255.2.1 = 42
enterprises.ucdavis.255.2.2 = OID: 42.42.42
enterprises.ucdavis.255.3 = Timeticks: (363136200) 42 days, 0:42:42
enterprises.ucdavis.255.4 = IpAddress: 127.0.0.1
enterprises.ucdavis.255.5 = 42
enterprises.ucdavis.255.6 = Gauge: 42

Reference

[1],[2],[3],[4]