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