$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(<CONF>){
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";
}
@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",
);
$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";
$duration=`$snmpgetcmd enterprises.9.9.47.1.3.1.1.9.$modem` or die "No MIB\n";
$duration=~/\) (.*)\./;
$duration=$1;
$modulation=`$snmpgetcmd enterprises.9.9.47.1.3.1.1.12.$modem` or die "No MIB\n";
$modulation=~/ \= (\d+)/;
$modulation=$ModulationScheme[$1];
$protocol=`$snmpgetcmd enterprises.9.9.47.1.3.1.1.13.$modem` or die "No MIB\n";
$protocol=~/ \= (\d+)/;
$protocol=$Protocol[$1];
$txrate=`$snmpgetcmd enterprises.9.9.47.1.3.1.1.14.$modem` or die "No MIB\n";
$txrate=~/Gauge32\: (\d+)/;
$txrate=$1;
$rxrate=`$snmpgetcmd enterprises.9.9.47.1.3.1.1.15.$modem` or die "No MIB\n";
$rxrate=~/Gauge32\: (\d+)/;
$rxrate=$1;
$rxsignal=`$snmpgetcmd enterprises.9.9.47.1.3.1.1.17.$modem` or die "No MIB\n";
$rxsignal=~/ \= (.*)\n/;
$rxsignal=$1;
if($type eq "xml"){
print "<User>$user</User>\n";
print "\t<Duration>$duration</Duration>\n";
print "\t<Modulation>$modulation</Modulation>\n";
print "\t<Protocol>$protocol</Protocol>\n";
print "\t<TxRate>$txrate</TxRate>\n";
print "\t<RxRate>$rxrate</RxRate>\n";
print "\t<RxSignal>$rxsignal dBm</RxSignal>\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);
}
}