#!/usr/bin/perl

$snmpget="/usr/local/bin/snmpget";
$snmpwalk="/usr/local/bin/snmpwalk";
$nas=shift;
$user=shift;
$com=shift || "public";
$type=shift|| "xml";

@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=`$snmpwalk $nas $com 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=`$snmpget $nas $com enterprises.9.9.47.1.3.1.1.9.$modem` or die "No MIB\n";
  $duration=~/\) (.*)\./;
  $duration=$1;

  $modulation=`$snmpget $nas $com enterprises.9.9.47.1.3.1.1.12.$modem` or die "No MIB\n";
  $modulation=~/ \= (\d+)/;
  $modulation=$ModulationScheme[$1];

  $protocol=`$snmpget $nas $com enterprises.9.9.47.1.3.1.1.13.$modem` or die "No MIB\n";
  $protocol=~/ \= (\d+)/;
  $protocol=$Protocol[$1];

  $txrate=`$snmpget $nas $com enterprises.9.9.47.1.3.1.1.14.$modem` or die "No MIB\n";
  $txrate=~/Gauge32\: (\d+)/;
  $txrate=$1;

  $rxrate=`$snmpget $nas $com enterprises.9.9.47.1.3.1.1.15.$modem` or die "No MIB\n";
  $rxrate=~/Gauge32\: (\d+)/;
  $rxrate=$1;

  $rxsignal=`$snmpget $nas $com enterprises.9.9.47.1.3.1.1.17.$modem` or die "No MIB\n";
  $rxsignal=~/ \= (.*)\n/;
  $rxsignal=$1;

  if($type eq "xml"){
    print"<Modulation>$modulation</Modulation><Protocol>$protocol</Protocol><TxRate>$txrate</TxRate><RxRate>$rxrate</RxRate><RxSignal>$rxsignal</RxSignal>\n";

  }else{
    print "Duration>\t$duration\n";
    print "Modulation>\t$modulation\n";
    print "Protocol>\t$protocol\n";
    print "TxRate>\t\t$txrate\n";
    print "RxRate>\t\t$rxrate\n";
    print "RxSignal>\t$rxsignal dbm\n";
  }
}
