Saturday, 1 March 2014

To print N host details using perl

#!/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;


No comments:

Post a Comment