Portál AbcLinuxu, 9. května 2024 03:13


Dotaz: perl net-snmp walk

5.3.2012 18:05 jessica
perl net-snmp walk
Přečteno: 356×
Odpovědět | Admin
Zdravim.Po delsi laboraci sem se rohodl pro cteni snmp pomoci perlu namisto pythonu.Knihovna net-snmp v pythonu pri dotazech vytezovala procesor na 100%(debian stable amd64).Mozna to byla chyba nekde mezi klavesnici a zidli ale v perlu tenhle problem zmizel.Co vsak v perlu NET::SNMP nemuzu najit je WALK.Coz mi dost chybi zblaste kdyz chci vypsat kolik je na cisco switchi interface a jak se jmenuji kdyz to predem nevim :-).Nevite nekdo jak udelat v perlu s NET::SNMP walk ? Predem diky za nejakou radu .
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.3.2012 20:07 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: perl net-snmp walk
Odpovědět | | Sbalit | Link | Blokovat | Admin
Net::SNMP::Util::walk()
5.3.2012 23:44 Ivan
Rozbalit Rozbalit vše OT: Re: perl net-snmp walk
Odpovědět | | Sbalit | Link | Blokovat | Admin
Oni existuji dva baliky NET::SNMP jeden je soucasti instalace Perlu a druhy se da najit na CPANu. Ten z CPANu toho umi vic.
6.3.2012 12:46 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: perl net-snmp walk
Odpovědět | | Sbalit | Link | Blokovat | Admin
NET::SNMP standartne walk neumi, ale neni problem dodelat (neco podobneho pouzivam, jen jsem to trochu upravil pro prezentaci):

sub SnmpWalk {
    my $base = shift;
    my $ses;
    my $e;
    my $err = undef;
    my $res;
    my $oid;
    my $val;
    my $tx;

    ($ses, $e) = Net::SNMP->session(
            -hostname => 'snmp.domain.com',
            -port => 161,
            -version => 'snmpv2c',
            -community => 'public';
    if($ses) {
        $oid = $base;
        while(substr($oid, 0, length($base)) eq $base) {
            $res = $ses->get_next_request(-varbindlist => [$oid]);
            if($res) {
                $oid = (keys(%$res))[0];
                $val = $res->{$oid};
                $tx = "$oid = $val";
                if(substr($oid, 0, length($base)) eq $base) {
                    do_something($tx);
                }
            } elsif($ses->error_status() == 2) {
                $oid = "";
            } else {
                $err = error("SnmpWalk - can not get snmp OIDs ($oid): '" . $ses->error() . "'");
                $oid = "";
            }
        }
    } else {
        $err = error("SnmpWalk - can not create SNMP session: '$e'");
    }
}
Nerikam, ze to nejde lip, ale funguje to.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.