[mrtg] AW: One last question
"Helmert, Jörg"
Joerg.Helmert at EINSTEINet.de
Mon Jul 1 09:43:25 MEST 2002
Hi,
both of your last emails show, that you don't read your answers
too carefully... :-(
Your mail with subject: mrtg -- help
I answerd before, that windows pathseperators (backslashes) make problems.
Now you have another example.
You call: c:\perl\bin\snmpwalk
which is c:perinsnmpwalk like the errormessage says.
Ok you somewhen realized this and changed the sub.
But as i wrote before:
You cannot just change from a externally called binary snmpwalk
to a perl library which gives you a function with the same name.
It is not the same, just because its the same name.
Compare how you call snmpwalk (commy seperated values)
and how mrtg calls functions from snmputil.
(the thing with community at host).
If you don't read your answers, I guess you'll not
get additional answers in future.
And please keep in mind:
Nothing of this mail should have sounded offending.
I'm just a foreigner who sometimes has problems with english ;-)
bye,
Joerg Helmert
-----Ursprüngliche Nachricht-----
Von: GUARENO at FORDHAM.EDU [mailto:GUARENO at FORDHAM.EDU]
Gesendet: Freitag, 28. Juni 2002 23:49
An: Helmert, Jörg
Cc: mrtg at list.ee.ethz.ch
Betreff: One last question
Hello again.... This is my last question, I promise.
I think I worked out the kinks out of the script (cat_internet2.pl) but now
I only get one error. The script runs fine through almost every single OID
specified in it. I get the error is (for every OID -5 times-):
SNMP walk problem for 1.3.6.1.4.1.529.x.x.x.x on X.X.X.X
Unknown SNMP variable "mycommunity" (where "mycommunity" is the snmp
comnunity I type at the command
perl cat_internet2.pl community at 150.x.x.x)
I now understand about binaries and using SNMP_util instead.
Am I missing something here. Many thanks in advance...
#!/perl/bin/perl
#
# Copyright (C) Gehri Grimaud Email: gehri at thingy.usu.edu
# Office of Computer Services
# Utah State University
# Logan, Utah 84322-4410
#
# May be freely distributed
#
# Script to do a "finger" on a Lucent Ascend MAX 6000.
#
# Written 30-July-1998
#
# USAGE: pmfinger community\@router
#
# The output of this script looks like:
# box1 #2 fred 192.168.2.111 Connect 0:1:06:53 Idle 0:0:00:07
26400/31200
# box2 #3 joe 192.168.2.87 Connect 0:2:13:47 Idle 0:0:00:07
31200/33600
#
# define the SNMP Object ID's we are looking for. The Object names for
# the "Enterprise.Ascend...." MIB variables are way too ugly for words,
# so we use ".1.3.6.1.4.1.529...." OIDs instead
use SNMP_util "0.92";
%OID = (
"sysName" => ".1.3.6.1.4.1.529.2.6.1.0",
"SerialUser" => ".1.3.6.1.4.1.529.12.3.1.4",
"SerialStarted" => ".1.3.6.1.4.1.529.12.3.1.5",
"SerialIdle" => ".1.3.6.1.4.1.529.11.16.1.5",
"InSpeed" => ".1.3.6.1.4.1.529.11.16.1.14",
"OutSpeed" => ".1.3.6.1.4.1.529.11.16.1.4",
);
# get the args
($community, $router) = split(/\@/, $ARGV[0]);
#print "$community,$router\n";
die <<USAGE unless $community && $router;
USAGE: pmfinger 'community'\@'router'
USAGE
# get the system name
#snmpwalk( sysName ) returns _stuff_.0 "pm1"
$sysName = ( &snmpwalk( $router, $community, $OID{"sysName"} ))[0];
print "sysName=$sysName\n";
$sysName =~ /"(.*?)"/;
$sysName = $1;
# get the usernames
# snmpwalk( SerialUser) returned values look like:
# _mib_stuff_.1 ""
# _mib_stuff_.2 "fred"
# _mib_stuff_.3 "miles"
# _mib_stuff_.4 "gehri"
# _mib_stuff_.5 ""
foreach $z ( &snmpwalk( $router, $community, $OID{"SerialUser"} )){
if( $z =~ /\.(\d+) "(.+?)"/ ){
$users{$1} = $2;
}
}
# Get associated connect and idle times
# snmpwalk( SerialStarted ) returns _mib_stuff_.2 0:0:29:19
# snmpwalk( SerialIdle ) returns _mib_stuff_.6 0:0:00:04
foreach $z ( &snmpwalk( $router, $community, $OID{"SerialStarted"} )){
if( $z =~ /\.(\d+) (.+?)\n/ ){
$started{$1} = $2;
}
}
#foreach $z ( &snmpwalk( $router, $community, $OID{"SerialIdle"} )){
# if( $z =~ /\.(\d+) ([^\n]+)\n/ ){
# $idle{$1} = $2;
# }
#}
# Get IP address for each port
# snmpwalk( SerialIpAddress ) returns _mib_stuff_.3 192.168.13.12
foreach $z ( &snmpwalk( $router, $community, $OID{"SerialIpAddress"} )){
if( $z =~ /\.(\d+) ([\d\.]+)/ ){
$ip{$1} = $2;
}
}
# Get connect speeds
# snmpwalk( InSpeed ) returns _mib_stuff_.2 33600
# snmpwalk( OutSpeed ) returns _mib_stuff_.2 50666
foreach $z ( &snmpwalk( $router, $community, $OID{"InSpeed"} )){
if( $z =~ /\.(\d+) (\d+)/ ){
$speed{$1} = $2;
}
}
foreach $z ( &snmpwalk( $router, $community, $OID{"OutSpeed"} )){
if( $z =~ /\.(\d+) (\d+)/ ){
$speed{$1} .= "/" . $2;
}
}
# print out info with some attempt at formatting
foreach $port ( sort { $a <=> $b } keys(%users) ){
printf "$sysName #%-2d %-8s %-15s Connect %s Idle %s %s\n",
$port, $users{$port}, $ip{$port}, $started{$port};
$idle{$port}, $speed{$port};
}
exit 0;
#####################################################
# @return = &snmpwalk( "router", "community", "OID" )
#
# call snmpwalk and return the results. snmpwalk is an external SNMP walk
# program. In my case it is from the ucd-snmp SNMP suite.
# It is available at ftp://ucd-snmp.ucdavis.edu/
#
#sub snmpwalk{
# (my $Router, my $Community, my $OID ) = @_ or return ();
# open(SNMP, "c:/perl/bin/snmpwalk -Oq -v 1 $Router $Community $OID |");
# my @snmp_table = <SNMP>;
# close SNMP;
# return @snmp_table;
#}
--
Unsubscribe mailto:mrtg-request at list.ee.ethz.ch?subject=unsubscribe
Archive http://www.ee.ethz.ch/~slist/mrtg
FAQ http://faq.mrtg.org Homepage http://www.mrtg.org
WebAdmin http://www.ee.ethz.ch/~slist/lsg2.cgi
More information about the mrtg
mailing list