stephan: SNMP request überspringen bei no response

Hi!

Habe folgendes Problem:
Ich brauche ein Tool, welches via SNMP Systemdaten von anderen Netz-Komponenten zieht. Dazu habe ich ein kleines Perl Script gebastelt:

Die einzelnen Geräte werden in einer foreach-schleife angesprochen und für jedes Gerät wird eine Session eröffnet:

$session = SNMP_Session->open ($hostname, $community, 161);

In dieser zeile wird geprüft, ob das gerät antwortet:

if ($session->getnext_request_response (@next_oids)) {

Falls ja, werden die verschiedenen Anfragen bearbeitet, falls nicht:

else {
     print "$hostname: Keine Antwort!!";
     }

Und beim else bleibt das Script dann hängen. Falls ich das "print" durch ein "die" austausche, funktioniert es. Aber das bringt mir nichts, da das Perl Script dann abgebrochen wird und die restlichen Geräte nicht abgefragt werden.

Weiß von euch jemand wie ich die Geräte die nicht per SNMP antworten umgehen kann? Bzw. wieso klappt das mit dem einfachen print-Befehl nicht?

PS: die Geräte sind am Netz also ping funktioniert.

  1. Hi!

    Die einzelnen Geräte werden in einer foreach-schleife angesprochen und für jedes Gerät wird eine Session eröffnet:

    $session = SNMP_Session->open ($hostname, $community, 161);

    In dieser zeile wird geprüft, ob das gerät antwortet:

    if ($session->getnext_request_response (@next_oids)) {

    Falls ja, werden die verschiedenen Anfragen bearbeitet, falls nicht:

    else {
         print "$hostname: Keine Antwort!!";
         }

    Und beim else bleibt das Script dann hängen. Falls ich das "print" durch ein "die" austausche, funktioniert es. Aber das bringt mir nichts, da das Perl Script dann abgebrochen wird und die restlichen Geräte nicht abgefragt werden.

    Na dann ersetze mal den print() nicht durch die() sondern durch next(); und die Schleife geht weiter....

    Gruss, Rolf

    --
    http://perlbase.xwolf.de/
    1. »»Na dann ersetze mal den print() nicht durch die() sondern
      »»durch next(); und die Schleife geht weiter....
      »»Gruss, Rolf

      Danke für den Tipp, leider funktioniert es immer noch nicht.
      Hab auch schon mal den kompletten else Zweig rausgenommen. Dies führt komischerweise auch dazu, dass das Script hängen bleibt...