Thread SNMP Walk (9 answers)
Opened by draekster at 2009-05-28 14:39

anti
 2009-05-29 08:32
#122054 #122054
User since
2003-11-29
155 Artikel
BenutzerIn
[default_avatar]
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
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
28
29
30
durchlaufe OID: 1.3.6.1.2.1.1.2.0
durchlaufe OID: 1.3.6.1.2.1.1.3.0
durchlaufe OID: 1.3.6.1.2.1.1.4.0
durchlaufe OID: 1.3.6.1.2.1.1.5.0
durchlaufe OID: 1.3.6.1.2.1.1.6.0
durchlaufe OID: 1.3.6.1.2.1.1.8.0
durchlaufe OID: 1.3.6.1.2.1.1.9.1.2.1
durchlaufe OID: 1.3.6.1.2.1.1.9.1.2.2
durchlaufe OID: 1.3.6.1.2.1.1.9.1.2.3
durchlaufe OID: 1.3.6.1.2.1.1.9.1.2.4
durchlaufe OID: 1.3.6.1.2.1.1.9.1.2.5
durchlaufe OID: 1.3.6.1.2.1.1.9.1.2.6
durchlaufe OID: 1.3.6.1.2.1.1.9.1.2.7
durchlaufe OID: 1.3.6.1.2.1.1.9.1.2.8
durchlaufe OID: 1.3.6.1.2.1.1.9.1.3.1
durchlaufe OID: 1.3.6.1.2.1.1.9.1.3.2
durchlaufe OID: 1.3.6.1.2.1.1.9.1.3.3
durchlaufe OID: 1.3.6.1.2.1.1.9.1.3.4
durchlaufe OID: 1.3.6.1.2.1.1.9.1.3.5
durchlaufe OID: 1.3.6.1.2.1.1.9.1.3.6
durchlaufe OID: 1.3.6.1.2.1.1.9.1.3.7
durchlaufe OID: 1.3.6.1.2.1.1.9.1.3.8
durchlaufe OID: 1.3.6.1.2.1.1.9.1.4.1
durchlaufe OID: 1.3.6.1.2.1.1.9.1.4.2
durchlaufe OID: 1.3.6.1.2.1.1.9.1.4.3
durchlaufe OID: 1.3.6.1.2.1.1.9.1.4.4
durchlaufe OID: 1.3.6.1.2.1.1.9.1.4.5
durchlaufe OID: 1.3.6.1.2.1.1.9.1.4.6
durchlaufe OID: 1.3.6.1.2.1.1.9.1.4.7
durchlaufe OID: 1.3.6.1.2.1.1.9.1.4.8


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.

View full thread SNMP Walk