Thread SNMP Walk
(9 answers)
Opened by draekster at 2009-05-28 14:39
Hier mal ein Minimalbeispiel:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #! /usr/local/bin/perl use strict; use Net::SNMP; my ($session, $error) = Net::SNMP->session( -hostname => shift || '127.0.0.1', -community => shift || 'public', -port => shift || 161 ); if (!defined($session)) { printf("ERROR: %s.\n", $error); exit 1; } my $response = $session->get_next_request('1.3.6.1.2.1.1'); my @nextid = keys %$response; while ( $nextid[0] =~ m/^1\.3\.6\.1\.2\.1\.1/ ) { $response = $session->get_next_request( $nextid[0] ); @nextid = keys %$response; print "durchlaufe OID: $nextid[0] \n"; #fuer diese OID nun Werte abholen etc. } erzeugt: Code: (dl
)
1 durchlaufe OID: 1.3.6.1.2.1.1.2.0 Damit werden nur alle OIDs durchlaufen. Ist eine entsprechende OID dabei, dann kann per snmp-request der Wert dazu abgeholt werden. Ich würde allerdings die Temperaturwerte zu den unterschiedlichen Komponenten zuerst heraussuchen und irgendwo ablegen. Dann muss bei der Abfrage nur noch der Gerätetyp überprüft werden und die OIDs für die Temperaturwerte stehen schon fest. Damit reicht wieder ein einfacher request. |