📄 showmodem
字号:
#!/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(<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";}#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>$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); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -