-ALL I am actually new (couple of months) to Perl and find it difficult to edit this example of a Net::Snmp script for snmpwalk. The desired result is to have the script do a walk and print to either the console or log file. When I run it I dont know why or if the script is actually running the mibwalk. It prints out the sub_usage below and I dont know why. Can someone please analyze and explain to me why? Thanks for your help in advance. -dW #!/usr/bin/perl -w eval '(exit $?0)' && eval 'exec /usr/bin/perl $0 ${1+" $@"}' <mailto:$@;> && eval 'exec /usr/bin/perl $0 $argv:q' if 0; # ============================================================================ # $Id: snmpwalk.pl,v 2.0 2001/10/15 13:21:52 dtown Exp $ # Copyright (c) 2000-2001 David M. Town < [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > # All rights reserved. # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. # ============================================================================ use Net::SNMP qw(oid_lex_sort oid_base_match SNMP_VERSION_1 DEBUG_ALL); use Getopt::Std; use strict; use vars qw($SCRIPT $VERSION %OPTS); $SCRIPT = 'snmpwalk'; $VERSION = '2.0.0'; # Validate the command line options if (!getopts('a:A:c:dE:m:n:p:r:t:u:v:X:', \%OPTS)) { _usage(); } # Do we have enough/too much information? if (@ARGV != 2) { _usage(); } # Create the SNMP session my ($s, $e) = Net::SNMP->session( -version => 'snmpv1', -hostname => shift || '152.148.218.51', -community => shift || 'public@public' <mailto:'public@public'> , - exists($OPTS{a}) ? (-authprotocol => $OPTS{a}) : (), exists($OPTS{A}) ? (-authpassword => $OPTS{A}) : (), exists($OPTS{c}) ? (-community => $OPTS{c}) : (), exists($OPTS{d}) ? (-debug => DEBUG_ALL) : (), exists($OPTS{m}) ? (-maxmsgsize => $OPTS{m}) : (), exists($OPTS{p}) ? (-port => $OPTS{p}) : (), exists($OPTS{r}) ? (-retries => $OPTS{r}) : (), exists($OPTS{t}) ? (-timeout => $OPTS{t}) : (), exists($OPTS{u}) ? (-username => $OPTS{u}) : (), exists($OPTS{v}) ? (-version => $OPTS{v}) : (), exists($OPTS{X}) ? (-privpassword => $OPTS{X}) : () ); # Was the session created? if (!defined($s)) { _exit($e); } # Perform repeated get-next-requests or get-bulk-requests (SNMPv2c) # until the last returned OBJECT IDENTIFIER is no longer a child of # OBJECT IDENTIFIER passed in on the command line. my @args = ( exists($OPTS{E}) ? (-contextengineid => $OPTS{E}) : (), exists($OPTS{n}) ? (-contextname => $OPTS{n}) : (), -varbindlist => [$ARGV[0]] ); if ($s->version == SNMP_VERSION_1) { while (defined($s->get_next_request(@args))) { $_ = (keys(%{$s->var_bind_list}))[0]; if (!oid_base_match($ARGV[0], $_)) { last; } printf("%s => %s\n", $_, $s->var_bind_list->{$_}); @args = (-varbindlist => [$_]); } } else { push(@args, -maxrepetitions => 25); outer: while (defined($s->get_bulk_request(@args))) { my @oids = oid_lex_sort(keys(%{$s->var_bind_list})); foreach (@oids) { if (!oid_base_match($ARGV[0], $_)) { last outer; } printf("%s => %s\n", $_, $s->var_bind_list->{$_}); # Make sure we have not hit the end of the MIB if ($s->var_bind_list->{$_} eq 'endOfMibView') { last outer; } } # Get the last OBJECT IDENTIFIER in the returned list @args = (-maxrepetitions => 25, -varbindlist => [pop(@oids)]); } } # Let the user know about errors (except noSuchName). if (($s->error() ne '') && ($s->error_status() != 2)) { _exit($s->error()); } # Close the session $s->close(); exit 0; # [private] ------------------------------------------------------------------ sub _exit { printf join('', sprintf("%s: ", $SCRIPT), shift(@_), ".\n"), @_; exit 1; } sub _usage { printf("%s v%s\n", $SCRIPT, $VERSION); printf("Usage: %s [options] <hostname> <oid>\n", $SCRIPT ); printf("Options: -v 1|2c|3 SNMP version\n"); printf(" -d Enable debugging\n"); printf(" SNMPv1/SNMPv2c:\n"); printf(" -c <community> Community name\n"); printf(" SNMPv3:\n"); printf(" -u <username> Username (required)\n"); printf(" -E <engineid> Context Engine ID\n"); printf(" -n <name> Context Name\n"); printf(" -a md5|sha1 Authentication protocol\n"); printf(" -A <password> Authentication password\n"); printf(" -X <password> Privacy password\n"); printf(" Transport Layer:\n"); printf(" -m <octets> Maximum message size\n"); printf(" -p <port> Destination UDP port\n"); printf(" -r <attempts> Number of retries\n"); printf(" -t <secs> Timeout period\n"); exit 1; } # ============================================================================