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