All pastes #895237 Raw Edit

mtestping.pl

public text v1 · immutable
·published 2008-02-07 17:49 UTC
rendered paste body
#!c:/perl/bin/perl.exe
#
# script ping a list of device ip's  (given as an argument)
# gets D-Link model number

use strict;
use Net::Ping;
use Net::Telnet;

# check argument list
unless(@ARGV) {
                die "Usage: mtestping.pl list-devices-file \n";
        }

my $timeout = 2;             # timeout to ping
my @hostlist;
my $cnt;
my $dev;
my $p;
my $host;
my $ok;
my $dead;
my $data;
my $telnet; my $numdata;
#my $genver;
#my $sec; my $min; my $hour; my $mday; my $mon; my $year; my $wday; my $yday; my $isdst;

autoflush STDOUT;

# load list of devices

open (INFILE,$ARGV[0]) or die "error open list of devices ";
@hostlist=<INFILE>;
close INFILE;

# get number of elements in list (number of devices)
my $num_elem = scalar @hostlist;
$cnt=1;
my $dev;

foreach $dev (@hostlist)
{   
         $host = $dev;
         chomp $host;
         if ($host =~ /^#\d+/) { next; };
              $p = Net::Ping->new("icmp",$timeout);
              print "$cnt of $num_elem host $host";
              if ($p->ping($host)) { 
                              print " got answer"; $ok++;
			      
				$telnet = new Net::Telnet (Timeout=>2,
					Errmode => 'return');
				$telnet->open($host);
#			print "Connected, ";
				$data = $telnet->get(Timeout=>2);
#			print "data: $data\n";
				($numdata,$data) = split(' Fast',$data);
				(undef,$numdata) = split('DES-',$numdata);
#			print "model: $numdata\n";
				(undef,$data) = split('ild ',$data);
				($data,undef) = split('\n',$data);
				chomp $data;
#				$genver = substr $data, 0, 1;
#				($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
#				if ($sec < 10) { $sec = '0'.$sec; } if ($min < 10) { $min = '0'.$min; }
#				if ($hour < 10) { $hour = '0'.$hour; }
#			print "\n      [$hour:$min:$sec] $connect2 model DES-".$numdata." has firmware $data";
			print " DES-".$numdata." firmware ".$data;
#				open OUT, ">>v3.txt";
#				print OUT $host.";".$numdata.";".$data."\n"; 
#				close OUT; 
			
#			print "ver.: $data; bigV: $genver\n";
			$telnet->close;
			
                    } else   {print " NO response"; $dead++;};
         $cnt++;
         print "\n";
};
$cnt--;
print "-----\n".$cnt." total: $ok up; $dead no response\n";