#!c:\perl\bin
# dualpri.pl
#
#
# Created by Eric Billeter
# returns:
# Modems in use (value1)
# Chassis Capacity (value2)
use SNMP_Session;
use BER;
use Socket;
use strict;
%snmpget::OIDS = ( 'value1' => '1.3.6.1.4.1.429.1.16.4.1.2',
);
my($community,$router) = split /\@/, $ARGV[0];
die <<USAGE unless $community && $router;
USAGE: dualpri.pl 'SNMP_community'\@'aaa.bbb.ccc.ddd'
Where 'aaa.bbb.ccc.ddd' is the ip address for the Network Management Card.
USAGE
my($sysName,$sysUptime,$interfaces,$value1,$value2) =
snmpgettable($router,$community,'value1');
exit(0);
sub snmpgettable{
my($host,$community,$var) = @_;
my($next_oid,$enoid,$orig_oid,
$response, $bindings, $binding, $value, $inoid,$outoid,
$upoid,$oid,@table,$tempo);
die "Unknown SNMP var $var\n"
unless $snmpget::OIDS{$var};
$orig_oid = encode_oid(split /\./, $snmpget::OIDS{$var});
$enoid=$orig_oid;
srand();
my $session = SNMP_Session->open ($host ,
$community,
161);
for(;;) {
if ($session->getnext_request_response(($enoid))) {
$response = $session->pdu_buffer;
($bindings) = $session->decode_get_response ($response);
($binding,$bindings) = decode_sequence ($bindings);
($next_oid,$value) = decode_by_template ($binding, "%O%@");
# quit once we are outside the table
last unless BER::encoded_oid_prefix_p($orig_oid,$next_oid);
my $bulkindex = 3;
while( $bulkindex < "96" ){
$tempo = substr ($value,$bulkindex,1);
$bulkindex=$bulkindex+4;
if( ord($tempo) eq '5' or ord($tempo) eq '3' or ord($tempo) eq '22' ){$value1=$value1 + 1 ;
}
if( ord($tempo) eq '2' or ord($tempo) eq '5' or ord($tempo) eq '3' or ord($tempo) eq '22' ){$value2=$value2 + 1 ;
}
}
push @table, $tempo;
} else {
die "No answer from $ARGV[0]\n";
}
$enoid=$next_oid;
}
$session->close ();
if( $value1 eq ''){$value1 = 0 };
if( $value2 eq ''){$value2 = 0 };
print "$value1\n";
print "$value2\n";
return (@table);
}