[SNMP/PHP] Uitlezen van SNMP objecten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goeiemiddag,

Na een volle vrijdag plus weekend ploeteren val ik alsnog de GOT maar lastig.
Ik heb een simpel scriptje waarmee ik de SMPD objecten wil uitlezen voor het beschikbare geheugen van een bepaalde server en ook uit kunnen lezen wat de uptime is.

Nu heb ik de volgende code :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php


///####Hostname variabel definieren
$val = '200.102.123.124';

///####Connecten en objecten uitlezen
$a = snmpwalkoid($val, "community", ".1.3.6.1.2.1.25.2.3.1");

///####Array uitlezen met `for` statement.
for (reset($a); $i = key($a); next($a)) {
    echo "$i: $a[$i]<br />\n";
}


Deze genereert de volgende output :
.iso.3.6.1.2.1.25.2.3.1.1.1: 1
.iso.3.6.1.2.1.25.2.3.1.1.2: 2
.iso.3.6.1.2.1.25.2.3.1.1.3: 3
.iso.3.6.1.2.1.25.2.3.1.1.4: 4
.iso.3.6.1.2.1.25.2.3.1.1.5: 5
.iso.3.6.1.2.1.25.2.3.1.2.1: OID: .iso.3.6.1.2.1.25.2.1.4
.iso.3.6.1.2.1.25.2.3.1.2.2: OID: .iso.3.6.1.2.1.25.2.1.4
.iso.3.6.1.2.1.25.2.3.1.2.3: OID: .iso.3.6.1.2.1.25.2.1.4
.iso.3.6.1.2.1.25.2.3.1.2.4: OID: .iso.3.6.1.2.1.25.2.1.3
.iso.3.6.1.2.1.25.2.3.1.2.5: OID: .iso.3.6.1.2.1.25.2.1.2
.iso.3.6.1.2.1.25.2.3.1.3.1: "C:\\ Label: Serial Number b894983"
.iso.3.6.1.2.1.25.2.3.1.3.2: "D:\\ Label:DATA Serial Number 74a3b8d"
.iso.3.6.1.2.1.25.2.3.1.3.3: "E:"
.iso.3.6.1.2.1.25.2.3.1.3.4: "Virtual Memory"
.iso.3.6.1.2.1.25.2.3.1.3.5: "Physical Memory"
.iso.3.6.1.2.1.25.2.3.1.4.1: 4096
.iso.3.6.1.2.1.25.2.3.1.4.2: 4096
.iso.3.6.1.2.1.25.2.3.1.4.3: 0
.iso.3.6.1.2.1.25.2.3.1.4.4: 65536
.iso.3.6.1.2.1.25.2.3.1.4.5: 65536
.iso.3.6.1.2.1.25.2.3.1.5.1: 4194235
.iso.3.6.1.2.1.25.2.3.1.5.2: 13717975
.iso.3.6.1.2.1.25.2.3.1.5.3: 0
.iso.3.6.1.2.1.25.2.3.1.5.4: 661745
.iso.3.6.1.2.1.25.2.3.1.5.5: 262106
.iso.3.6.1.2.1.25.2.3.1.6.1: 1864576
.iso.3.6.1.2.1.25.2.3.1.6.2: 6857622
.iso.3.6.1.2.1.25.2.3.1.6.3: 0
.iso.3.6.1.2.1.25.2.3.1.6.4: 10656
.iso.3.6.1.2.1.25.2.3.1.6.5: 19728
.iso.3.6.1.2.1.25.2.3.1.7.1: Counter32: 0
.iso.3.6.1.2.1.25.2.3.1.7.2: Counter32: 0
.iso.3.6.1.2.1.25.2.3.1.7.3: Counter32: 0
.iso.3.6.1.2.1.25.2.3.1.7.4: Counter32: 0
.iso.3.6.1.2.1.25.2.3.1.7.5: Counter32: 0
Hij achterhaalt dus inderdaad de uptime, lijkt de fysiek beschikbare ruimte uit te spuwen.
Maar ik weet dus niet hoe ik nou exact achterhaal wat wat is.

Mijn enige grote vraag is hoe ik nou specifiek bijvoorbeeld het beschikbare geheugen kan achterhalen.

Ik ben zover dat je snmpget hiervoor moet gebruiken :

Bijvoorbeeld :
$mem=snmpget($val,"community",".3.6.1.2.1.25.2.3.1.5.2");

Ik heb voor :3.6.1.2.1.25.2.3.1.5.2 gewoon de key gepakt zoals ik dacht dat deze goed was.
Maar hij geeft een mooie error :
Warning: snmpget() [function.snmpget]: Error in packet: (noSuchName) There is no such variable name in this MIB. in C:\wamp\www\alex\script.php on line 44
Ik heb sowiezo gezocht hier op de GOT., maar vond weinig wat mij verder hielp.
Wat ik dus niet kon achterhalen is hoe ik kon vinden waar ik exact de keys kon vinden.

Ik zie een hele bende keys, maar geen van allen is correct.
Ik hoop ook echt dat iemand mij een schop in de goede richting kan geven.

BVD ;)

[ Voor 5% gewijzigd door Verwijderd op 04-02-2008 14:11 ]


Acties:
  • 0 Henk 'm!

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
Al eens naar de overige beschikbare enums gekeken?
Bijvoorbeeld:
http://nl.php.net/manual/nl/function.snmp-set-enum-print.php

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:07

TeeDee

CQB 241

En heb je de tips / tricks op PHP.net al bekeken?

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Doe eens .1 (.iso in walk output) voor de key zetten. Je walked namelijk over .1.3.6.1.2.1.xxxxx, maar vervolgens haal je de waarde op vanuit .3.6.1.2.1.xxxxx.

Waarschijnlijk als je de waarde prefixed met .1 zul je wel snmtpget kunnen gebruiken.

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • KingEd
  • Registratie: Maart 2004
  • Laatst online: 20:52
of MRTG (op basis ven PERL) gebruiken. http://oss.oetiker.ch/mrtg/
Zeer krachtig en met handige grafieken.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Niemand_Anders schreef op maandag 04 februari 2008 @ 14:46:
Doe eens .1 (.iso in walk output) voor de key zetten. Je walked namelijk over .1.3.6.1.2.1.xxxxx, maar vervolgens haal je de waarde op vanuit .3.6.1.2.1.xxxxx.

Waarschijnlijk als je de waarde prefixed met .1 zul je wel snmtpget kunnen gebruiken.
Cool!! Dit is exact waarnaar ik zocht.
Al moet ik nu nog uitvinden wat wat is.

Want in de machine heb ik 16Gb Ram gestopt.
De output van het script is :
.iso.3.6.1.2.1.25.2.3.1.1.1: 1
.iso.3.6.1.2.1.25.2.3.1.1.2: 2
.iso.3.6.1.2.1.25.2.3.1.1.3: 3
.iso.3.6.1.2.1.25.2.3.1.1.4: 4
.iso.3.6.1.2.1.25.2.3.1.1.5: 5
.iso.3.6.1.2.1.25.2.3.1.2.1: OID: .iso.3.6.1.2.1.25.2.1.4
.iso.3.6.1.2.1.25.2.3.1.2.2: OID: .iso.3.6.1.2.1.25.2.1.4
.iso.3.6.1.2.1.25.2.3.1.2.3: OID: .iso.3.6.1.2.1.25.2.1.4
.iso.3.6.1.2.1.25.2.3.1.2.4: OID: .iso.3.6.1.2.1.25.2.1.3
.iso.3.6.1.2.1.25.2.3.1.2.5: OID: .iso.3.6.1.2.1.25.2.1.2
.iso.3.6.1.2.1.25.2.3.1.3.1: "C:\\ Label: Serial Number b894983"
.iso.3.6.1.2.1.25.2.3.1.3.2: "D:\\ Label:DATA Serial Number 74a3b8d"
.iso.3.6.1.2.1.25.2.3.1.3.3: "E:"
.iso.3.6.1.2.1.25.2.3.1.3.4: "Virtual Memory"
.iso.3.6.1.2.1.25.2.3.1.3.5: "Physical Memory"
.iso.3.6.1.2.1.25.2.3.1.4.1: 4096
.iso.3.6.1.2.1.25.2.3.1.4.2: 4096
.iso.3.6.1.2.1.25.2.3.1.4.3: 0
.iso.3.6.1.2.1.25.2.3.1.4.4: 65536
.iso.3.6.1.2.1.25.2.3.1.4.5: 65536
.iso.3.6.1.2.1.25.2.3.1.5.1: 4194235
.iso.3.6.1.2.1.25.2.3.1.5.2: 13717975
.iso.3.6.1.2.1.25.2.3.1.5.3: 0
.iso.3.6.1.2.1.25.2.3.1.5.4: 661745
.iso.3.6.1.2.1.25.2.3.1.5.5: 262106
.iso.3.6.1.2.1.25.2.3.1.6.1: 1864639
.iso.3.6.1.2.1.25.2.3.1.6.2: 6857622
.iso.3.6.1.2.1.25.2.3.1.6.3: 0
.iso.3.6.1.2.1.25.2.3.1.6.4: 10680
.iso.3.6.1.2.1.25.2.3.1.6.5: 19756
.iso.3.6.1.2.1.25.2.3.1.7.1: Counter32: 0
.iso.3.6.1.2.1.25.2.3.1.7.2: Counter32: 0
.iso.3.6.1.2.1.25.2.3.1.7.3: Counter32: 0
.iso.3.6.1.2.1.25.2.3.1.7.4: Counter32: 0
.iso.3.6.1.2.1.25.2.3.1.7.5: Counter32: 0
Nu dus zoeken wat als output geeft dat hij 16Gb heeft.
Het is overigens in bytes.
Maar wat ik ook bereken het blijft uitkomen op een waarde die niet helemaal klopt.
Dus ik vermoed dat hij weergeeft, beschikbaar en gebruikt. Maar which of which. :D :p

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:07

TeeDee

CQB 241

En de volgende optie:

PHP:
1
$mem = snmpget($val, "community", "HOST-RESOURCES-MIB::hrMemorySize.0");

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
TeeDee schreef op maandag 04 februari 2008 @ 15:40:
En de volgende optie:

PHP:
1
$mem = snmpget($val, "community", "HOST-RESOURCES-MIB::hrMemorySize.0");
Daarom ging ik over tot de complete string erachter te jassen.
Het bovenstaande geeft namelijk een mooie foutmelding.
Warning: snmpget() [function.snmpget]: Invalid object identifier: HOST-RESOURCES-MIB::hrMemorySize.0 in C:\wamp\www\alex\script.php on line 19
En de enige zinvol lijkende pagina die uit een google daarop haal is één of andere Franse pagina. En helaas is mijn Frans niet zo super. :(

Niet doelend dat ik graag iemand het hier heb te vertalen. ofzo :p
Schiet niet echt op ;)

Acties:
  • 0 Henk 'm!

Verwijderd

.iso.3.6.1.2.1.25.2.3.1.4.4 is de multiplier
.iso.3.6.1.2.1.25.2.3.1.5.5 is de waarde/multiplier

dus 65536 * 262106 = 17177378816 = 16GB

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op maandag 04 februari 2008 @ 16:18:
.iso.3.6.1.2.1.25.2.3.1.4.4 is de multiplier
.iso.3.6.1.2.1.25.2.3.1.5.5 is de waarde/multiplier

dus 65536 * 262106 = 17177378816 = 16GB
Helemaal top!!
Maar mag ik vragen hoe je dat gezien hebt?

Het is achteraf gezien wel logisch maar zo op het eerste gezicht viel het mij totaal niet op.
TIAD :)

Verwijderd

Heb je 'snmpwalk' al geprobeerd? Dan hoef je niet zo met cijfertjes te werken.
Hier een voorbeeldje van '.iso.3.6.1.2.1.25.2.3.1.4.4'

$ snmpwalk -v2c -c public localhost .iso.3.6.1.2.1.25.2.3.1.4
HOST-RESOURCES-MIB::hrStorageAllocationUnits.1 = INTEGER: 1024 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.3 = INTEGER: 1024 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.6 = INTEGER: 1024 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.7 = INTEGER: 1024 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.8 = INTEGER: 1024 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.10 = INTEGER: 1024 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.31 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.32 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.33 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.34 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.35 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.36 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.37 = INTEGER: 1024 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.38 = INTEGER: 1024 Bytes

Dan zie je dus netjes welke namen eraan gekoppeld zijn. Dus dan is je snmpget bijvoorbeeld alsvolgt:
$ snmpget -v2c -c public localhost hrStorageAllocationUnits.1
HOST-RESOURCES-MIB::hrStorageAllocationUnits.1 = INTEGER: 1024 Bytes

Ik wil nu ook met PHP een mooie applicatie hiervoor maken. Ben je toevallig OpenSource bezig? :)
Pagina: 1