URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8139
[ Назад ]

Исходное сообщение
"Пинговалка на Perl."

Отправлено timmych , 10-Мрт-09 10:57 
Задача следующая: нужно на  Perl написать скрипт, который пингует определенное количество хостов (список IP адресов находится либо в скрипте, либо в отдельном файле). Пинговатся хосты должны каждые 6 минут, отсылатся должны 100 пакетов. После пингования эти 100 значений  мне нужно сохранить  в базу данных sql для дальнейшей обработки. Поскольку с программированием раньше дела не имел, то мне составить даный скрипт тяжеловато....помогите плизз...


Содержание

Сообщения в этом обсуждении
"Пинговалка на Perl."
Отправлено angra , 10-Мрт-09 11:06 
Есть четыре варианта:
1. Берешь книжку, man, perldoc и пишешь сам. При столкновении с проблемами задаешь конкретные вопросы.
2. Указываешь контакты и сумму.  
3. Читаешь как правильно задавать вопросы, задаешь вопрос правильно и надеешься на то, что  кому-то будет скучно и он захочет потратить время на твою работу
4. Ждешь чуда и телепатов.

"Пинговалка на Perl."
Отправлено mr_gfd , 10-Мрт-09 13:55 
>Задача следующая: нужно на  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;


"Пинговалка на Perl."
Отправлено timmych , 10-Мрт-09 14:02 

>
>Допили под потребности или смотри комментарий предидушего оратора
>

Спасибо!!!


"Пинговалка на Perl."
Отправлено maximka , 30-Сен-13 18:05 
>>
>>Допили под потребности или смотри комментарий предидушего оратора
>>
> Спасибо!!!

http://dns-ip.ru/Personal/Cabinet юзаю этот сервис