Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Net::Snmp Attempt

by Abigail (Deacon)
on Jul 12, 2001 at 01:30 UTC ( #95861=note: print w/ replies, xml ) Need Help??


in reply to Net::Snmp Attempt

I would write is as follows:

#!/usr/bin/perl -w use strict; use Net::SNMP; Usage () unless @ARGV == 2; my ($session, $error) = Net::SNMP -> session ( -hostname => $ARGV [0], -community => $ARGV [1], ); $session or die "Session error: $error"; my $tableid = "1.3.6.1.4.1.1991.1.1.4.6.1.1"; my $table = $session -> get_table ($tableid) or die "request error: ", $session -> error; foreach my $oid (keys %$table) { if ($oid =~ /^\Q$tableid\E\.(\d+)/) { print "Real server ", $table -> {$oid}, ", port ", $table -> {"$tableid.5. +$1"}, ", is bound to virtual server ", $table -> {"$tableid.2. +$1"}, ", on port ", $table -> {"$tableid.3. +$1"}, "\n"; } } my $sysid = "1.3.6.1.2.1.1.4.0"; my $syscontact = $session -> get_request ($sysid) or die "Request error: ", $session -> error; print "For help or questions contact: ", $syscontact -> {$sysid}, "\n" +; $session -> close;
Some differences: no global variables (with use vars). No magical constants that are repeated. Taken care of the special meaning of a dot inside a regex. Anchored the regex. Used parenthesis to capture relevant field. No needless concatenation in print or die. Success is checked right away and not in a separate statement. Just one check to see if there are enough arguments.

-- Abigail


Comment on Re: Net::Snmp Attempt
Select or Download Code
Replies are listed 'Best First'.
Re: Re: Net::Snmp Attempt
by Jer (Initiate) on Jul 13, 2001 at 01:55 UTC
    Abigail,

    Thanks for your help. I understand most of the changes you made. I especially appreciate the regex cleanup. I'm puzzled by the lines

    $table -> {"$tableid.5.$1"}, $table -> {"$tableid.2.$1"},

    What does the $1 do?

    Jer

      $1 doesn't really "do" anything; it's a variable having a value. It is set by the preceeding regular expression which contains a set of parenthesis. The part of the string that is matched by the sub expression in the parens is put in $1. This avoids needing to do the split and getting the last element. See also the perlre manual page.

      -- Abigail

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://95861]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (19)
As of 2015-07-31 21:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (282 votes), past polls