#!/usr/local/bin/perl
use Net::SNMP;
use POSIX;
$varIP=$ARGV[0];
$varCommStr=$ARGV[1];
$varProbeTime=$ARGV[2];
print "\nHost IP:$varIP\n";
$IfNumber = '1.3.6.1.2.1.2.1.0';
$IfIndex = '1.3.6.1.2.1.2.2.1.1';
$IfTable = '1.3.6.1.2.1.2.2.1';
($session,$error)= Net::SNMP->session(
-hostname => $varIP,
-community => $varCommStr,
-timeout => 1,
-translate => 0);
if (defined($session)) {
$result=$session->get_request(-varbindlist => [$IfNumber]);
if(defined($result)){
$varIfNo=$result->{$IfNumber};
print "Interfaces: $varIfNo\n";
@arrIfTable=("$IfTable");
$j=1;
while($j<=($varIfNo)){
$arr=$session->get_next_request(-varbindlist => \@arrIfTable);
@kkk=$session->var_bind_names;
@arrIfTable=$kkk[0];
$arrIfInd=$session->get_request(-varbindlist => \@arrIfTable);
@varIndexValues[$j-1]=$arrIfInd->{$kkk[0]};
$j++;
}
$k=1;
@arrPreInBitRate;
@arrPreOutBitRate;
$l=1;
$varPValue=1;
while($l<=32){
$varPValue *= 2;
$l++;
}
print "\t InBitRate/InBitRateMean\tOutBitRate/OutBitRateMean\n";
for($count=1;$count>0;$count++){
print "Sample #: $count\n";
$varStartTime=time();
$i=1;
@arrIfAllValues = ();
@arrIfBitRate = ();
while($i<=$varIfNo){
$sysUpTime = '1.3.6.1.2.1.1.3.0';
$IfInOctets= '1.3.6.1.2.1.2.2.1.10.'.$varIndexValues[$i-1];
$IfOutOctets ='1.3.6.1.2.1.2.2.1.16.'.$varIndexValues[$i-1];
@oids = ("$sysUpTime","$IfInOctets","$IfOutOctets");
$values=$session->get_request(-varbindlist => \@oids);
if(defined($values)){
#print "\t $i. \t ".$values->{$IfInOctets}." \t ".$values->{$IfOutOctets}."\n";
$varSysUpTime=$values->{$sysUpTime};
$varInOctets=$values->{$IfInOctets};
$varOutOctets=$values->{$IfOutOctets};
push (@arrIfAllValues, [$varSysUpTime, $varInOctets, $varOutOctets]);
#print "$varSysUpTime, $varInOctets, $varOutOctets\n";
#print scalar(@arrPreValue)."\t $arrPreValue[$i-1][1] \t $arrPreValue[$i-1][2] \n";
if($count>1){
if($arrPreValue[$i-1][1]<=$varInOctets){
$varInBitRate=(800*($varInOctets-$arrPreValue[$i-1][1])/($varSysUpTime-$arrPreValue[$i-1][0]));
}else{
$varInBitRate=(800*($varInOctets+($varPValue-$arrPreValue[$i-1][1]))/($varSysUpTime-$arrPreValue[$i-1][0]));
}
if($arrPreValue[$i-1][2]<=$varOutOctets){
$varOutBitRate=(800*($varOutOctets-$arrPreValue[$i-1][2])/($varSysUpTime-$arrPreValue[$i-1][0]));
}else{
$varOutBitRate=(800*($varOutOctets+($varPValue-$arrPreValue[$i-1][2]))/($varSysUpTime-$arrPreValue[$i-1][0]));
}
$varInBitRateMean = ((($varInBitRate)+(($count-1)*($arrPreBitValue[$i-1][0])))/$count);
$varOutBitRateMean = ((($varOutBitRate)+(($count-1)*($arrPreBitValue[$i-1][1])))/$count);
}else{
$varInBitRate=(800*($varInOctets)/($varSysUpTime));
$varOutBitRate=(800*($varOutOctets)/($varSysUpTime));
$varInBitRateMean = $varInBitRate/$count;
$varOutBitRateMean = $varOutBitRate/$count;
}
push (@arrIfBitRate, [$varInBitRateMean, $varOutBitRateMean]);
$arrPreInBitRate[$count-1][$i-1] = $varInBitRate;
$arrPreOutBitRate[$count-1][$i-1] = $varOutBitRate;
print "\t $i. ".floor($varInBitRate)." / ".floor($varInBitRateMean)." \t ".floor($varOutBitRate)." /
".floor($varOutBitRateMean)."\n";
$i++;
}else {
print "\t $i.\t OIDs error: ".$session->error."\n";
}
}
@arrPreValue=();
@arrPreValue=@arrIfAllValues;
@arrPreBitValue=();
@arrPreBitValue=@arrIfBitRate;
if($count>=10){
if($count==10){
for($n=0;$n<$varIfNo;$n++){
$InSum=0;
$OutSum=0;
for($p=0;$p<10;$p++){
#print "\tArray InBitRate: ".$arrPreInBitRate[$p][$n]."\tArray OutBitRate: ".$arrPreOutBitRate[$p][$n]."\n";
$InSum += $arrPreInBitRate[$p][$n];
$OutSum += $arrPreOutBitRate[$p][$n];
}
print "$n. InBitRate Average: ".floor(($InSum/10))." \t OutBitRate Average: ".floor(($OutSum/10))."\n";
}
}else{
for($n=0;$n<$varIfNo;$n++){
$InSum=0;
$OutSum=0;
$varArrCount=scalar(@arrPreInBitRate);
for($p=$varArrCount;$p>($varArrCount-10);$p--){
#print "\tArray InBitRate: ".$arrPreInBitRate[$p-1][$n]."\tArray OutBitRate: ".$arrPreOutBitRate[$p-1][$n]."\n";
$InSum += $arrPreInBitRate[$p-1][$n];
$OutSum += $arrPreOutBitRate[$p-1][$n];
}
print "$n. InBitRate Average: ".floor(($InSum/10))." \t OutBitRate Average: ".floor(($OutSum/10))."\n";
}
}
}
$varEndTime=time();
$varProcTime=($varEndTime-$varStartTime);
$varSleep=($varProbeTime-$varProcTime);
sleep($varProbeTime-$varProcTime);
}
print "\n";
} else {
print $session->error."\n";
}
}
$session->close;
use Net::SNMP;
use POSIX;
$varIP=$ARGV[0];
$varCommStr=$ARGV[1];
$varProbeTime=$ARGV[2];
print "\nHost IP:$varIP\n";
$IfNumber = '1.3.6.1.2.1.2.1.0';
$IfIndex = '1.3.6.1.2.1.2.2.1.1';
$IfTable = '1.3.6.1.2.1.2.2.1';
($session,$error)= Net::SNMP->session(
-hostname => $varIP,
-community => $varCommStr,
-timeout => 1,
-translate => 0);
if (defined($session)) {
$result=$session->get_request(-varbindlist => [$IfNumber]);
if(defined($result)){
$varIfNo=$result->{$IfNumber};
print "Interfaces: $varIfNo\n";
@arrIfTable=("$IfTable");
$j=1;
while($j<=($varIfNo)){
$arr=$session->get_next_request(-varbindlist => \@arrIfTable);
@kkk=$session->var_bind_names;
@arrIfTable=$kkk[0];
$arrIfInd=$session->get_request(-varbindlist => \@arrIfTable);
@varIndexValues[$j-1]=$arrIfInd->{$kkk[0]};
$j++;
}
$k=1;
@arrPreInBitRate;
@arrPreOutBitRate;
$l=1;
$varPValue=1;
while($l<=32){
$varPValue *= 2;
$l++;
}
print "\t InBitRate/InBitRateMean\tOutBitRate/OutBitRateMean\n";
for($count=1;$count>0;$count++){
print "Sample #: $count\n";
$varStartTime=time();
$i=1;
@arrIfAllValues = ();
@arrIfBitRate = ();
while($i<=$varIfNo){
$sysUpTime = '1.3.6.1.2.1.1.3.0';
$IfInOctets= '1.3.6.1.2.1.2.2.1.10.'.$varIndexValues[$i-1];
$IfOutOctets ='1.3.6.1.2.1.2.2.1.16.'.$varIndexValues[$i-1];
@oids = ("$sysUpTime","$IfInOctets","$IfOutOctets");
$values=$session->get_request(-varbindlist => \@oids);
if(defined($values)){
#print "\t $i. \t ".$values->{$IfInOctets}." \t ".$values->{$IfOutOctets}."\n";
$varSysUpTime=$values->{$sysUpTime};
$varInOctets=$values->{$IfInOctets};
$varOutOctets=$values->{$IfOutOctets};
push (@arrIfAllValues, [$varSysUpTime, $varInOctets, $varOutOctets]);
#print "$varSysUpTime, $varInOctets, $varOutOctets\n";
#print scalar(@arrPreValue)."\t $arrPreValue[$i-1][1] \t $arrPreValue[$i-1][2] \n";
if($count>1){
if($arrPreValue[$i-1][1]<=$varInOctets){
$varInBitRate=(800*($varInOctets-$arrPreValue[$i-1][1])/($varSysUpTime-$arrPreValue[$i-1][0]));
}else{
$varInBitRate=(800*($varInOctets+($varPValue-$arrPreValue[$i-1][1]))/($varSysUpTime-$arrPreValue[$i-1][0]));
}
if($arrPreValue[$i-1][2]<=$varOutOctets){
$varOutBitRate=(800*($varOutOctets-$arrPreValue[$i-1][2])/($varSysUpTime-$arrPreValue[$i-1][0]));
}else{
$varOutBitRate=(800*($varOutOctets+($varPValue-$arrPreValue[$i-1][2]))/($varSysUpTime-$arrPreValue[$i-1][0]));
}
$varInBitRateMean = ((($varInBitRate)+(($count-1)*($arrPreBitValue[$i-1][0])))/$count);
$varOutBitRateMean = ((($varOutBitRate)+(($count-1)*($arrPreBitValue[$i-1][1])))/$count);
}else{
$varInBitRate=(800*($varInOctets)/($varSysUpTime));
$varOutBitRate=(800*($varOutOctets)/($varSysUpTime));
$varInBitRateMean = $varInBitRate/$count;
$varOutBitRateMean = $varOutBitRate/$count;
}
push (@arrIfBitRate, [$varInBitRateMean, $varOutBitRateMean]);
$arrPreInBitRate[$count-1][$i-1] = $varInBitRate;
$arrPreOutBitRate[$count-1][$i-1] = $varOutBitRate;
print "\t $i. ".floor($varInBitRate)." / ".floor($varInBitRateMean)." \t ".floor($varOutBitRate)." /
".floor($varOutBitRateMean)."\n";
$i++;
}else {
print "\t $i.\t OIDs error: ".$session->error."\n";
}
}
@arrPreValue=();
@arrPreValue=@arrIfAllValues;
@arrPreBitValue=();
@arrPreBitValue=@arrIfBitRate;
if($count>=10){
if($count==10){
for($n=0;$n<$varIfNo;$n++){
$InSum=0;
$OutSum=0;
for($p=0;$p<10;$p++){
#print "\tArray InBitRate: ".$arrPreInBitRate[$p][$n]."\tArray OutBitRate: ".$arrPreOutBitRate[$p][$n]."\n";
$InSum += $arrPreInBitRate[$p][$n];
$OutSum += $arrPreOutBitRate[$p][$n];
}
print "$n. InBitRate Average: ".floor(($InSum/10))." \t OutBitRate Average: ".floor(($OutSum/10))."\n";
}
}else{
for($n=0;$n<$varIfNo;$n++){
$InSum=0;
$OutSum=0;
$varArrCount=scalar(@arrPreInBitRate);
for($p=$varArrCount;$p>($varArrCount-10);$p--){
#print "\tArray InBitRate: ".$arrPreInBitRate[$p-1][$n]."\tArray OutBitRate: ".$arrPreOutBitRate[$p-1][$n]."\n";
$InSum += $arrPreInBitRate[$p-1][$n];
$OutSum += $arrPreOutBitRate[$p-1][$n];
}
print "$n. InBitRate Average: ".floor(($InSum/10))." \t OutBitRate Average: ".floor(($OutSum/10))."\n";
}
}
}
$varEndTime=time();
$varProcTime=($varEndTime-$varStartTime);
$varSleep=($varProbeTime-$varProcTime);
sleep($varProbeTime-$varProcTime);
}
print "\n";
} else {
print $session->error."\n";
}
}
$session->close;
No comments:
Post a Comment