>Задача следующая: нужно на Perl написать скрипт, который пингует определенное количество
>хостов (список IP адресов находится либо в скрипте, либо в отдельном
>файле). Пинговатся хосты должны каждые 6 минут, отсылатся должны 100 пакетов.
>После пингования эти 100 значений мне нужно сохранить в
>базу данных sql для дальнейшей обработки. Поскольку с программированием раньше дела
>не имел, то мне составить даный скрипт тяжеловато....помогите плизз... Допили под потребности или смотри комментарий предидушего оратора
[12:53][berylhead][/home/mike]>cat pinger.pl
#!/usr/bin/perl -w
#
# Net pinging util by Mike v0.2
#
use strict;
use warnings;
# Обьявляем переменные
my $net='192.168.0.';
my ($addr, $mac, $status, $i, @stack, $ip);
our %ip_mac;
# Тут цикл (от 1 до 255, шаг - +1)
for ($i = 1; $i <= 255; $i++) {
$addr="$net"."$i";
#print "Trying $addr... ";
# выполняем внешнюю команду (send 1 icmp packet, wait 1 second, find count of received packets)
$status=`ping -Qq -c 1 -t 1 $addr | grep loss`;
$status=~/(\d+)\s+packets.*\s+(\d+)\s+packets.*/;
my $tx=$1;
my $rx=$2;
if ($tx eq $rx) {
$mac=`arp -n $addr`;
$mac=~s/.*at\s(.*)\son.*/$1/;
chomp ($addr,$mac);
$ip_mac{ $addr } = $mac;
} else {
#print "Seems down\n";
}
}
print "Found:\n";
for $addr (sort keys %ip_mac) {
print "$addr : $ip_mac{$addr}\n";
}
#while ( my ($addr, $mac) = each(%ip_mac) ) {
# print "$addr => $mac\n";
#}
exit 0;