Das senden einer trap mit Perl Net::SNMP

Ich versuche einen trap senden als Teil einer größeren Perl-Skript. Ich habe kopiert die trapsending code in einer anderen Datei, und verwende es selbst. Der code scheint zu denken, dass die Falle schickt erfolgreich, aber ich bin nicht zu sehen, die Falle auf Computer, dass ich eine trap-listener läuft.

Hier der code:

#! /usr/local/bin/perl
use strict;
use warnings;

use Net::SNMP;

#messy hardcoding
my $snmp_target = '192.168.129.50';
#my $snmp_target = '10.200.6.105'; # Server running trap listener
my $enterprise = '1.3.6.1.4.1.27002.1';

my ($sess, $err) = Net::SNMP->session(
    -hostname  => $snmp_target,
    -version => 1, #trap() requires v1
);

if (!defined $sess) {
    print "Error connecting to target ". $snmp_target . ": ". $err;
    next;
}

my @vars = qw();
my $varcounter = 1;

push (@vars, $enterprise . '.' . $varcounter);
push (@vars, OCTET_STRING);
push (@vars, "Test string");

my $result = $sess->trap(
    -varbindlist => \@vars,
    -enterprise => $enterprise,
    -specifictrap => 1,
);

if (! $result)
{
    print "An error occurred sending the trap: " . $sess->error();
}

EDIT: Hinzugefügt $sess->debug(255) aufrufen, hier ist die Ausgabe:

debug: [440] Net::SNMP::Dispatcher::_event_insert(): created new head and tail [ARRAY(0x1af1fea8)]
debug: [687] Net::SNMP::Message::send(): transport address 192.168.129.50:161
debug: [2058] Net::SNMP::Message::_buffer_dump(): 70 bytes
[0000]  30 44 02 01  00 04 06 70  75 62 6C 69  63 A4 37 06   0D.....public.7.
[0016]  09 2B 06 01  04 01 81 D2  7A 01 40 04  C0 A8 81 85   .+......z.@.....
[0032]  02 01 06 02  01 01 43 01  00 30 1B 30  19 06 0A 2B   ......C..0.0...+
[0048]  06 01 04 01  81 D2 7A 01  01 04 0B 54  65 73 74 20   ......z....Test 
[0064]  73 74 72 69  6E 67                                   string
debug: [517] Net::SNMP::Dispatcher::_event_delete(): deleted [ARRAY(0x1af1fea8)], list is now empty

EDIT: Kann jemand läuft eine Falle listener versuchen, diesen code auf Ihre Maschine und lassen Sie mich wissen, wenn es funktioniert?

EDIT: habe Versucht, es von meinem MBP. Gleichen Ergebnis. Dann bemerkt, dass die debug-info sagt, es ist das senden auf port 161. Gezwungen -port => 162 parameter, und es funktioniert. Das hinterlässt bei mir ein paar Fragen:

  1. Warum die trap-sender standardmäßig 161?
  2. Ich bekomme diese Fehlermeldung, wenn ich mit debug auf. Was bedeutet es?

    Fehler: [97] Net::SNMP::Transport::IPv4::UDP::agent_addr(): Failed to disconnect: Address family not supported by protocol family

  • Können Sie sniff network traffic, um zu überprüfen, was wirklich gesendet wird? Vielleicht problem ist auf der anderen Seite oder routing sendet es irgendwo unerwartete? Sie können auch versuchen, aktivieren Sie den debug-Modus mit $sess->debug(255) Sitzung.
  • Aus dem debug, es sieht aus wie seine zu senden. Ich füge der obigen Ausgabe.
  • Funktioniert das versenden eines Traps mit snmptrap funktioniert? Ich denke, dass viele server nicht akzeptieren, v1 trap.
  • Bestätigt der Versand einer v1-trap mit snmptrap funktioniert.
InformationsquelleAutor coding_hero | 2012-06-20
Schreibe einen Kommentar