Страница 1 из 1
perl по учебе, помощь по доке
Добавлено: 2012-05-22 11:33:34
Spook1680
Добрый день
подскажите плиз
в докум. perl для знатока это примитв будет.
Net::Ping - check a remote host for reachability
там есть хороший пример
Код: Выделить всё
$p = Net::Ping->new("icmp");
$p->bind($my_addr); # Specify source interface of pings
foreach $host (@host_array)
{
print "$host is ";
print "NOT " unless $p->ping($host, 2);
print "reachable.\n";
sleep(1);
}
$p->close();
пытаюсь прикрутить if else но не выходит.
задача к примеру если google.ru не пингуется
то должно выполниться
`cp test1 test`
если пингуеться то ничего не происходит.
Re: perl по учебе, помощь по доке
Добавлено: 2012-05-22 11:38:38
ChihPih
А как пытаетесь прикрутить?
Re: perl по учебе, помощь по доке
Добавлено: 2012-05-22 11:47:36
Spook1680
ChihPih писал(а):А как пытаетесь прикрутить?
Код: Выделить всё
#!/usr/bin/perl -w
use Net::Ping;
$host = '192.168.0.59';
$my_addr = '192.168.0.59';
@host_array = 'google.ru';
$vtor = `cp /test1 /test`;
$p = Net::Ping->new("icmp");
$p->bind($my_addr); # Specify source interface of pings
foreach $host (@host_array)
{
print "$host is ";
$vtor unless $p->ping($host, 2);
print "reachable.\n";
sleep(1);
}
$p->close();
Re: perl по учебе, помощь по доке
Добавлено: 2012-05-22 12:21:47
ChihPih
Еще бы, для задания переменной вы используете апострофы (которые используется для выполнения системных команд и получения от них результата), когда надо вывести строку. То есть вам надо использовать одинарные или двойные кавычки для инициализации переменной $vtor.
Re: perl по учебе, помощь по доке
Добавлено: 2012-05-22 12:43:51
Spook1680
ChihPih писал(а):Еще бы, для задания переменной вы используете апострофы (которые используется для выполнения системных команд и получения от них результата), когда надо вывести строку. То есть вам надо использовать одинарные или двойные кавычки для инициализации переменной $vtor.
ок.
ну тут простенько но работает теперь.
Код: Выделить всё
#!/usr/bin/perl -w
use Net::Ping;
$host = '192.168.0.63';
$my_addr = '192.168.0.63';
@host_array = 'google.ru';
$p = Net::Ping->new("icmp");
$p->bind($my_addr); # Specify source interface of pings
foreach $host (@host_array)
{
print `cp /test1 /test ` unless $p->ping($host, 2);
sleep(1);
}
$p->close();
~
Re: perl по учебе, помощь по доке
Добавлено: 2012-05-22 13:11:24
snorlov
$host зачем инициализировали, это ж элемент из массива $host_array
Re: perl по учебе, помощь по доке
Добавлено: 2012-05-22 13:23:51
Spook1680
snorlov писал(а):$host зачем инициализировали, это ж элемент из массива $host_array
ок.
т.е foreach в переменную $host не копируется элемент массива $host_array
Переменная $host в теле цикла — это и есть сам элемент массива.
ОК. Спасибо, я не правильно понимал принцип работы.
Re: perl по учебе, помощь по доке
Добавлено: 2012-05-24 10:00:16
Spook1680
snorlov писал(а):$host зачем инициализировали, это ж элемент из массива $host_array
Добрый день!
snorlov вы не подскажите!
Продолжаю изучение и не пойму, цикл until
как его прикрутить! Типа пинг хоста продолжаеться, пока нет ответа. Как только получили ответ, until прикращает действие
К примеру кусок из доки.
понимаю его так, подключили модуль use Net::Ping;
присвоем его скаляру $p
$p пингует хост (pupsik.ru)
если ping удался то выводит сообщение $host is alive
Код: Выделить всё
use Net::Ping;
$p = Net::Ping->new();
print "$host is alive.\n" if $p->ping($host);
$p->close();
К примеру, мне не понятно, как можно запихнуть - информацию о том что ping есть, пихать его в массив и сравнивать.
Re: perl по учебе, помощь по доке
Добавлено: 2012-05-24 10:55:10
ChihPih
Продолжаю изучение и не пойму, цикл until
как его прикрутить! Типа пинг хоста продолжаеться, пока нет ответа. Как только получили ответ, until прикращает действие
Оператор until робит до тех пор пока результат проверяемого выражение равен 0 (false). То есть в самом простом случае, код может выглядеть так:
Код: Выделить всё
use Net::Ping;
$p = Net::Ping->new();
until ($p->ping($host)){
print "Host is down\n";
}
print "$host is alive.\n";
$p->close();
К примеру, мне не понятно, как можно запихнуть - информацию о том что ping есть, пихать его в массив и сравнивать.
Не совсем понятно что для чего нужно и зачем?
Re: perl по учебе, помощь по доке
Добавлено: 2012-05-24 11:42:57
Spook1680
К примеру, мне не понятно, как можно запихнуть - информацию о том что ping есть, пихать его в массив и сравнивать.
Не совсем понятно что для чего нужно и зачем?
[/quote]
until цикл как раз и хотел прикрутить. пока пинга нет, цикл работает и будет пинговать хост - пока не получит от него ответа.
Как только пинг пошел (типа комп. включили пинг есть). цикл until перестал выполняться, выполняеться команда `cp /test2 /test`