Thread Problem mit SNMP Abfrage (3 answers)
Opened by epytir at 2015-04-30 11:54

epytir
 2015-04-30 11:54
#180888 #180888
User since
2015-04-30
3 Artikel
BenutzerIn
[default_avatar]
Hey Community,
ich habe vor kurzem mit Perl angefangen um SNMPv3 Abfragen durchzuführen.
Ich habe nun das Problem das ich nicht in meine foreach Schleife komme ... weiß aber nicht warum , da elemente in meiner Variable definiert sind.

Um folgenden Code geht es :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
        $serverresponse = $session->get_table($SystemTempEntry);
        $session->close;

#Die Table wird erfolgreich als Hash abgehollt (Eine Temperaturabfrage einer Storage Systems)


        foreach my $snmpkey (keys %{$serverresponse} ) {
                my ($oid,$key) = ( $snmpkey =~ /(.*)\.(\d+)$/ );
                $snmpresponse{$oid}{$key} = $serverresponse->{$snmpkey};
        }

#Die SNMP Response zuweisung geht auch folgede ausgabe bekomm ich für die Elemente von $snmpresponse{$oid}{$key}
1
4
1
Baseboard
1
CPU 0 Relative
33
1
20
-54
2
1
5
1
Front panel
36
1
1
1
1
usw.


        $state = 'OK';
#Jetzt sollte er eigentlich für jedes Element der OID SystemTempDescription die weiter oben definiert ist einmal durch die Schleife gehen...
#Er kommt aber nie in die Schleife . Ich habe genau diesen Code bei einer Festplattenabfrage zum laufen gebracht. Die OID von SystemTempDescription stimmt.
#Ich habe alle OIDs getestet und an denen kann es nicht liegen(Der Rückgabewert weiter oben stimmt ja auch)


        foreach my $key ( keys %{$snmpresponse{$SystemTempDescription}} ) {
            print ".......................................";
                if ( defined $value ) {
                        if ( $snmpresponse{$SystemTempDescription}{$key} eq $value ) {
                                my $TempSensor = $snmpresponse{$SystemTempDescription}{$key};
                                my $Temp_name = basename($TempSensor);

                                my $Temperature = $snmpresponse{$SystemTempCurrentValue}{$key};
                        
                                $answer = "Sensor:  ".$Temp_name."  Termp:".$Temperature;
                                $perfdata = $Temp_name.$Temperature;
                                $state = 'WARNING' if ( ( defined $warn ) && ( $Temperature >= $warn ) );
                                $state = 'CRITICAL' if ( ( defined $warn ) && ( $Temperature >= $crit ) );
                                  
                                last;
                        }
                } 
                else {
                        my $TempSensor = $snmpresponse{$SystemTempDescription}{$key};
                        print $TempSensor;
                        my $Temp_name = basename($TempSensor);
                        print $TempSensor;
                        my $Temperature = $snmpresponse{$SystemTempCurrentValue}{$key};                                 
                        print $Temperature;
                        $answer .= "Sensor:  ".$Temp_name."  Termp:".$Temperature;
                        $perfdata .= $Temp_name.$Temperature;
                        $state = 'WARNING' if ( ( defined $warn ) && ( $Temperature >= $warn ) && ( $state ne 'CRITICAL') );
                        $state = 'CRITICAL' if ( ( defined $warn ) && ( $Temperature >= $crit ) );
                }
        }


Ich habe mein Problem im COde beschrieben. Hoffe jemand kann mir helfen :(
Gruß Epytir

View full thread Problem mit SNMP Abfrage