#!/usr/bin/perl # # This works with Net-SNMP and UCD-SNMP $host=shift; $user=shift; $comm=shift || "public"; $type=shift|| "xml"; $conf='/usr/local/dialup_admin/conf/admin.conf'; open CONF, "<$conf" or die "Could not open configuration file\n"; while(){ chomp; ($key,$val)=(split /:\s*/,$_); $snmp_type = $val if ($key eq 'general_snmp_type'); $snmpget = $val if ($key eq 'general_snmpget_command'); $snmpwalk = $val if ($key eq 'general_snmpwalk_command'); } close CONF; die "general_snmp_type directive is not set in admin.conf\n" if ($snmp_type eq ''); die "Could not find snmpwalk binary. Please make sure that the \$snmpwalk variable points to the right location\n" if (! -x $snmpwalk); if ($snmp_type = 'ucd') { $snmpgetcmd="$snmpget $host $comm"; $snmpwalkcmd="$snmpwalk $host $comm"; } if ($snmp_type = 'net') { $snmpgetcmd="$snmpget -v 1 -c $comm $host"; $snmpwalkcmd="$snmpwalk -v 1 -c $comm $host"; } #DEBUG#print "$snmpwalkcmd\n"; print "$snmpgetcmd\n"; @ModulationScheme = ( "error", "unknown", "bell103a", "bell212a", "v21", "v22", "v22bis", "v32", "v32bis", "vfc", "v34", "v17", "v29", "v33", "k56flex", "v23", "v32terbo", "v34plus", "v90", "v27ter", ); @Protocol = ( "error", "normal", "direct", "reliableMNP", "reliableLAPM", "syncMode", "asyncMode", "ara10", "ara20", "unknown", ); #DEBUG#print "$snmpwalkcmd enterprises.9.2.9.2.1.18 | grep $user\n"; $modem=`$snmpwalkcmd enterprises.9.2.9.2.1.18 | grep $user`; if($modem=~/enterprises\.9\.2\.9\.2\.1\.18\.(\d+) =/){ $modem=$1; $slot=(1+int($modem/120)); $port=$modem%120-1; $modem="$slot.$port"; #DEBUG#print "$snmpgetcmd enterprises.9.9.47.1.3.1.1.9.$modem\n"; $duration=`$snmpgetcmd enterprises.9.9.47.1.3.1.1.9.$modem` or die "No MIB\n"; $duration=~/\) (.*)\./; $duration=$1; #DEBUG#print "$snmpgetcmd enterprises.9.9.47.1.3.1.1.12.$modem\n"; $modulation=`$snmpgetcmd enterprises.9.9.47.1.3.1.1.12.$modem` or die "No MIB\n"; $modulation=~/ \= (\d+)/; $modulation=$ModulationScheme[$1]; #DEBUG#print "$snmpgetcmd enterprises.9.9.47.1.3.1.1.13.$modem\n"; $protocol=`$snmpgetcmd enterprises.9.9.47.1.3.1.1.13.$modem` or die "No MIB\n"; $protocol=~/ \= (\d+)/; $protocol=$Protocol[$1]; #DEBUG#print "$snmpgetcmd enterprises.9.9.47.1.3.1.1.14.$modem\n"; $txrate=`$snmpgetcmd enterprises.9.9.47.1.3.1.1.14.$modem` or die "No MIB\n"; $txrate=~/Gauge32\: (\d+)/; $txrate=$1; #DEBUG#print "$snmpgetcmd enterprises.9.9.47.1.3.1.1.15.$modem\n"; $rxrate=`$snmpgetcmd enterprises.9.9.47.1.3.1.1.15.$modem` or die "No MIB\n"; $rxrate=~/Gauge32\: (\d+)/; $rxrate=$1; #DEBUG#print "$snmpgetcmd enterprises.9.9.47.1.3.1.1.17.$modem\n"; $rxsignal=`$snmpgetcmd enterprises.9.9.47.1.3.1.1.17.$modem` or die "No MIB\n"; # $rxsignal=~ s/INTEGER\://; $rxsignal=~/ \= (.*)\n/; $rxsignal=$1; if($type eq "xml"){ print "$user\n"; print "\t$duration\n"; print "\t$modulation\n"; print "\t$protocol\n"; print "\t$txrate\n"; print "\t$rxrate\n"; print "\t$rxsignal dBm\n\n"; }else{ printf("%14s\t%s\n","User",$user); printf("%14s\t%s\n","Duration",$duration); printf("%14s\t%s\n","Modulation",$modulation); printf("%14s\t%s\n","Protocol",$protocol); printf("%14s\t%s\n","TxRate",$txrate); printf("%14s\t%s\n","RxRate",$rxrate); printf("%14s\t%s dBm\n\n","RxSignal",$rxsignal); } }