<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Se bem que... o cara já tem o caminho das pedras... tava bom para ele
começar a ler o código e os manuais...<br>
Hoje não posso ajudar mais pq tenho aulas de Perl para ministrar...<br>
<br>
Leia os Manuais e poste mais dúvidas... se postar levianamente Trolls
podem aparecer.<br>
<br>
Em 12/07/2010 17:59, Bruno Buss escreveu:
<blockquote
cite="mid:AANLkTild9nE0ImVPle5eWKzZVQxKr8XRWJqvqNJJdXFS@mail.gmail.com"
type="cite">Talvez você queira diminuir o timeout padrão:
<div>sub PING_TIMEOUT () { 5 }</div>
<div>(No seu script era 1 segundo se não me engano)</div>
<div><br>
</div>
<div>No POE::Component::Client::Ping->spawn, talvez você queira
passar a opção Parallelism, ex:</div>
<div>
<div>POE::Component::Client::Ping->spawn(</div>
<div> Alias => 'pinger', # The component's name will be
"pinger".</div>
<div> Timeout => PING_TIMEOUT, # The default ping timeout.</div>
<div> Parallelism => 128</div>
<div>);</div>
</div>
</blockquote>
<br>
No seu código o paralelismo era 250... <br>
<br>
<blockquote
cite="mid:AANLkTild9nE0ImVPle5eWKzZVQxKr8XRWJqvqNJJdXFS@mail.gmail.com"
type="cite">
<div><br>
<div class="gmail_quote">2010/7/12 João André Simioni <span dir="ltr"><<a
moz-do-not-send="true" href="mailto:jasimioni@gmail.com">jasimioni@gmail.com</a>></span><br>
<blockquote class="gmail_quote"
style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Thiago,<br>
<br>
dando uma bem de vagabundo, não li nada do POE, só modifiquei o<br>
código abaixo para pingar todos os meus Hosts.<br>
<br>
Mas ele está fazendo poucos processos paralelos. O tempo total de<br>
testes está 11 minutos com o POE, e o load nem faz cócegas. Sabem<br>
fácil como mexer nisso?<br>
<br>
Obrigado<br>
<div>
<div class="h5"><br>
2010/7/12 Thiago Glauco Sanchez <<a moz-do-not-send="true"
href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>>:<br>
> Puxa... eu sou muito "toupeira"... já tem código de exemplo para
isso feito<br>
> e muito mais pratico e completo que o meu...:<br>
><br>
> <a moz-do-not-send="true"
href="http://poe.perl.org/?POE_Cookbook/Pinging_Multiple_Hosts"
target="_blank">http://poe.perl.org/?POE_Cookbook/Pinging_Multiple_Hosts</a><br>
><br>
> Em 12/07/2010 15:52, Thiago Glauco Sanchez escreveu:<br>
>><br>
>> Um pequeno exemplo que eu criei apenas para ilustrar... o
pessoal que<br>
>> desejar incrementar, por favor, be my guest.<br>
>><br>
>> use 5.12.0;<br>
>> use POE;<br>
>> use Net::Ping;<br>
>> POE::Session->create(<br>
>> inline_states => {<br>
>> _start => sub {<br>
>> my ($kernel) = $_[KERNEL];<br>
>> print "Setting up a session\n";<br>
>> $kernel->yield("ping");<br>
>> },<br>
>><br>
>> ping => sub{my ($kernel) = $_[KERNEL];<br>
>> my @ping = `ping -n 1 <a moz-do-not-send="true"
href="http://www.ticursos.net" target="_blank">www.ticursos.net</a>`;<br>
>> map{say "ping externo ok" if $_ =~ /Perdidos = 0/ }
@ping;<br>
>> $kernel->delay_set("net_ping" => 3);<br>
>><br>
>> },<br>
>><br>
>> net_ping => sub{ my ($kernel) = $_[KERNEL];<br>
>> my $p = Net::Ping->new();<br>
>> $p->port_number(80);<br>
>> my ($ret, $duration, $ip) = $p->ping('<a
moz-do-not-send="true" href="http://ticursos.net" target="_blank">ticursos.net</a>');<br>
>> say "net::ping ok" if $ret;<br>
>> $p->close();<br>
>> $kernel->delay_set("ping" => 3)<br>
>> },<br>
>> },<br>
>> );<br>
>><br>
>> say "Iniciando o Kernel...";<br>
>> $poe_kernel->run( );<br>
>> exit(0);<br>
>><br>
>> sub start {<br>
>> my ($kernel) = $_[KERNEL];<br>
>> say "Iniciando os testes com POE";<br>
>> $kernel->yield("ping");<br>
>> }<br>
>><br>
>><br>
>> Em 12/07/2010 15:38, João André Simioni escreveu:<br>
>>><br>
>>> O pessoal comentou - eu vou dar uma olhada nele com
atenção.<br>
>>><br>
>>> Obrigado pela dica.<br>
>>><br>
>>> 2010/7/12 Thiago Glauco Sanchez<<a
moz-do-not-send="true" href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>>:<br>
>>>><br>
>>>> O Perl tem um framework para aplicações em rede e
Multitarefa chamada<br>
>>>> POE<br>
>>>> que<br>
>>>> "Provide a cooperative scheduling and multitasking
environment rivalling<br>
>>>> threads and IPC"<br>
>>>> Não seria o caso de estudarmos a possibilidade de usar
esse framework no<br>
>>>> seu<br>
>>>> sistema???<br>
>>>><br>
>>>> Em 11/07/2010 23:57, João André Simioni escreveu:<br>
>>>>><br>
>>>>> Foi um typo - erro de digitação - o Net::Ping
testa TCP e UDP. O ping<br>
>>>>> externo ICMP.<br>
>>>>><br>
>>>>> Mas assim, eu preciso resolver o problema com esse
teste em Perl -<br>
>>>>> como eu disse, essa parte do código é só um pedaço
de um sistema<br>
>>>>> maior. SNMP já é usado para várias outras coisas,
mas dependem de<br>
>>>>> access lists em routers e eu não tenho como
liberar.<br>
>>>>><br>
>>>>> []'s<br>
>>>>><br>
>>>>> 2010/7/11 Thiago Glauco Sanchez<<a
moz-do-not-send="true" href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>>:<br>
>>>>><br>
>>>>>> O que eu quero dizer: você testou com o ping
externo que é um teste<br>
>>>>>> icmp...<br>
>>>>>> depois fez outro teste icmp com o Net::Ping...<br>
>>>>>><br>
>>>>>> Não seria mais interessante testar de outra
forma?<br>
>>>>>><br>
>>>>>> $p = Net::Ping->new("tcp", 2);<br>
>>>>>> $p->port_number(getservbyname("http",
"tcp"));<br>
>>>>>><br>
>>>>>> Mais umas coisas: Suas máquinas/equipamentos
em teste estão via<br>
>>>>>> internet<br>
>>>>>> ou<br>
>>>>>> rede local?<br>
>>>>>> Já pensou em usar SNMP? Já tive um problema
parecido e iria utilizar<br>
>>>>>> um<br>
>>>>>> processo para cada equipamento por desempenho
e acabai optando por<br>
>>>>>> utilizar<br>
>>>>>> o Net:SNMP<br>
>>>>>> que permite utilizar uma função de callback em
vez de utilizar um<br>
>>>>>> processo<br>
>>>>>> para cada equipamento. Eu mando uma requisição
para todos os<br>
>>>>>> equipamentos<br>
>>>>>> e<br>
>>>>>> conforme eles respondem<br>
>>>>>> a função de call-back trata a requisição.<br>
>>>>>><br>
>>>>>> Porém, não conheço o seu ambiente. Apenas acho
que criar 4000 threads<br>
>>>>>> não<br>
>>>>>> seja a melhor solução.<br>
>>>>>><br>
>>>>>><br>
>>>>>> Em 11/07/2010 23:18, João André Simioni
escreveu:<br>
>>>>>><br>
>>>>>>> É typo - já está certo no código. ICMP vai
via comando externo, UDP e<br>
>>>>>>> TCP via Net::Ping.<br>
>>>>>>><br>
>>>>>>> Com relação aos testes, é normal um
momento de sobrecarga causar a<br>
>>>>>>> não<br>
>>>>>>> resposta de testes - essas sobrecargas não
devem duram mais que 5<br>
>>>>>>> segundos. Por isso o sleep - assim eu faço
o mesmo teste 3x, com<br>
>>>>>>> intervalos de 3 segundos.<br>
>>>>>>><br>
>>>>>>> []'s<br>
>>>>>>><br>
>>>>>>> On Sun, Jul 11, 2010 at 10:31 PM, Blabos
de Blebe<<a moz-do-not-send="true" href="mailto:blabos@gmail.com">blabos@gmail.com</a>><br>
>>>>>>> wrote:<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>> Não seria um typo?<br>
>>>>>>>><br>
>>>>>>>> icmp -> ping;<br>
>>>>>>>> tcp e udp -> Net::Ping<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> On Sun, Jul 11, 2010 at 6:42 PM,
Thiago Glauco Sanchez<br>
>>>>>>>> <<a moz-do-not-send="true"
href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>>
wrote:<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>> Sim sim, entendi sua preocupação.<br>
>>>>>>>>> Mas em vez de:<br>
>>>>>>>>><br>
>>>>>>>>> for (1..3) {<br>
>>>>>>>>> my $ping = `/bin/ping -c
1 -w 1 $ip`;<br>
>>>>>>>>><br>
>>>>>>>>> não seria melhor já mandar pingar
as 3 vezes no comando ou apenas<br>
>>>>>>>>> 1?<br>
>>>>>>>>> Você<br>
>>>>>>>>> está gerando 3 processos externos
sem necessidade real.<br>
>>>>>>>>><br>
>>>>>>>>> outra... o comando ping já não é
icmp?<br>
>>>>>>>>> my $p =
Net::Ping->new('icmp')???<br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>> Em 11/07/2010 17:04, João André
Simioni escreveu:<br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>>> Eu quero fazer o ping de 3
formas - UDP Echo / TCP Echo e ICMP<br>
>>>>>>>>>> Echo.<br>
>>>>>>>>>> Alguns clientes tem filtros e
assim eu evito falsos positivos.<br>
>>>>>>>>>><br>
>>>>>>>>>> Net::Ping mesmo com root tem
resultados incoerentes quando uso<br>
>>>>>>>>>> ICMP e<br>
>>>>>>>>>> Threads.<br>
>>>>>>>>>><br>
>>>>>>>>>> []'s<br>
>>>>>>>>>><br>
>>>>>>>>>> On Sun, Jul 11, 2010 at 4:56
PM, Thiago Glauco Sanchez<br>
>>>>>>>>>> <<a moz-do-not-send="true"
href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>>
wrote:<br>
>>>>>>>>>><br>
>>>>>>>>>><br>
>>>>>>>>>><br>
>>>>>>>>>>> Endosso a solução do Lorn.
Use o POE.<br>
>>>>>>>>>>><br>
>>>>>>>>>>> E cara... pra que isso??<br>
>>>>>>>>>>><br>
>>>>>>>>>>> sub checkIp {<br>
>>>>>>>>>>> my $ip = shift;<br>
>>>>>>>>>>> my $pingOk = 0;<br>
>>>>>>>>>>><br>
>>>>>>>>>>> eval {<br>
>>>>>>>>>>> for (1..3) {<br>
>>>>>>>>>>> my $ping =
`/bin/ping -c 1 -w 1 $ip`;<br>
>>>>>>>>>>><br>
>>>>>>>>>>> if (grep { / 0%
packet loss/ } $ping) {<br>
>>>>>>>>>>> $pingOk = 1;<br>
>>>>>>>>>>> return 1;<br>
>>>>>>>>>>> }<br>
>>>>>>>>>>><br>
>>>>>>>>>>> if ($pingOk ==
0) {<br>
>>>>>>>>>>> my $p =
Net::Ping->new('icmp');<br>
>>>>>>>>>>>
$p->service_check(1);<br>
>>>>>>>>>>> if
($p->ping($ip, 1)) {<br>
>>>>>>>>>>> $pingOk
= 1;<br>
>>>>>>>>>>> return
1;<br>
>>>>>>>>>>> }<br>
>>>>>>>>>>> }<br>
>>>>>>>>>>><br>
>>>>>>>>>>> if ($pingOk ==
0) {<br>
>>>>>>>>>>> my $p =
Net::Ping->new('udp');<br>
>>>>>>>>>>>
$p->service_check(1);<br>
>>>>>>>>>>> if
($p->ping($ip, 1)) {<br>
>>>>>>>>>>> $pingOk
= 1;<br>
>>>>>>>>>>> return
1;<br>
>>>>>>>>>>> }<br>
>>>>>>>>>>> }<br>
>>>>>>>>>>><br>
>>>>>>>>>>> sleep 3;<br>
>>>>>>>>>>> }<br>
>>>>>>>>>>> };<br>
>>>>>>>>>>><br>
>>>>>>>>>>> Para pingar com ping
externo, depois com o Net::Ping via icmp e<br>
>>>>>>>>>>> depois<br>
>>>>>>>>>>> com<br>
>>>>>>>>>>> net::Ping udp? Ah... se
não me engano, Net::Ping precisa de<br>
>>>>>>>>>>> permissão<br>
>>>>>>>>>>> root<br>
>>>>>>>>>>> para retornar um icmp de
forma correta...<br>
>>>>>>>>>>><br>
>>>>>>>>>>><br>
>>>>>>>>>>> Em 09/07/2010 17:48, João
André Simioni escreveu:<br>
>>>>>>>>>>><br>
>>>>>>>>>>><br>
>>>>>>>>>>><br>
>>>>>>>>>>>> Caros,<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> tenho um script para
testar cerca de 4700 equipamentos, usando<br>
>>>>>>>>>>>> ping.<br>
>>>>>>>>>>>> Queria usar cerca 250
threads para isso, então o que eu fiz foi<br>
>>>>>>>>>>>> quebrar o grupo de
4300 em grupos 18 elementos e abri uma thread<br>
>>>>>>>>>>>> para<br>
>>>>>>>>>>>> cada.<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> Não há nenhum problema
com o código, o que acontece é que o<br>
>>>>>>>>>>>> tempo<br>
>>>>>>>>>>>> de<br>
>>>>>>>>>>>> abertura das threads é
muito alto. E quanto mais threads eu<br>
>>>>>>>>>>>> abro,<br>
>>>>>>>>>>>> maior o tempo para
abertura das próximas. As primeiras abrem em<br>
>>>>>>>>>>>> 30ms,<br>
>>>>>>>>>>>> mas perto da thread 70
esse tempo já vai para quase 1 segundo.<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> Vocês sabem como
otimizar esse tempo de abertura? Ou alguma<br>
>>>>>>>>>>>> outra<br>
>>>>>>>>>>>> solução?<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> Segue o output do
script como exemplo:<br>
>>>>>>>>>>>> Para 4677 cpes, e 250
threads, tenho no final 246 grupos, com 19<br>
>>>>>>>>>>>> elementos<br>
>>>>>>>>>>>> cada<br>
>>>>>>>>>>>> Trying to create
thread in Fri Jul 9 17:46:50 2010.61858<br>
>>>>>>>>>>>> Created thread 1 (1) -
took 0.030138 seconds to create<br>
>>>>>>>>>>>> Trying to create
thread in Fri Jul 9 17:46:50 2010.92080<br>
>>>>>>>>>>>> Created thread 2 (2) -
took 0.042668 seconds to create<br>
>>>>>>>>>>>> Trying to create
thread in Fri Jul 9 17:46:50 2010.134968<br>
>>>>>>>>>>>> Created thread 3 (3) -
took 0.064245 seconds to create<br>
>>>>>>>>>>>> Trying to create
thread in Fri Jul 9 17:46:50 2010.199430<br>
>>>>>>>>>>>> Created thread 4 (4) -
took 0.082642 seconds to create<br>
>>>>>>>>>>>> Trying to create
thread in Fri Jul 9 17:46:50 2010.282278<br>
>>>>>>>>>>>> Created thread 5 (5) -
took 0.128257 seconds to create<br>
>>>>>>>>>>>> Trying to create
thread in Fri Jul 9 17:46:50 2010.410769<br>
>>>>>>>>>>>> Created thread 6 (6) -
took 0.136458 seconds to create<br>
>>>>>>>>>>>> Trying to create
thread in Fri Jul 9 17:46:50 2010.547383<br>
>>>>>>>>>>>> Created thread 7 (7) -
took 0.208085 seconds to create<br>
>>>>>>>>>>>> Trying to create
thread in Fri Jul 9 17:46:50 2010.755594<br>
>>>>>>>>>>>> Created thread 8 (8) -
took 0.173014 seconds to create<br>
>>>>>>>>>>>> Trying to create
thread in Fri Jul 9 17:46:50 2010.928756<br>
>>>>>>>>>>>> Created thread 9 (9) -
took 0.132713 seconds to create<br>
>>>>>>>>>>>> Trying to create
thread in Fri Jul 9 17:46:51 2010.61608<br>
>>>>>>>>>>>> Created thread 10 (10)
- took 0.127795 seconds to create<br>
>>>>>>>>>>>> Trying to create
thread in Fri Jul 9 17:46:51 2010.189536<br>
>>>>>>>>>>>> Created thread 11 (11)
- took 0.301836 seconds to create<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> Obrigado<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> João André Simioni<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>><br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> #!/usr/bin/perl<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> use strict;<br>
>>>>>>>>>>>> use DBI;<br>
>>>>>>>>>>>> use Net::Ping;<br>
>>>>>>>>>>>> use Time::HiRes
qw/usleep tv_interval gettimeofday/;<br>
>>>>>>>>>>>> use threads ('yield',
'stack_size' => 32*4096, 'exit'<br>
>>>>>>>>>>>> =><br>
>>>>>>>>>>>> 'threads_only',
'stringify');<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> my $host =
'192.168.160.179';<br>
>>>>>>>>>>>> my $sid = 'HOMOLOG';<br>
>>>>>>>>>>>> my $user = 'mac_user';<br>
>>>>>>>>>>>> my $pass = 'mac_user';<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> my $dbh =
DBI->connect("dbi:Oracle:host=$host;sid=$sid", $user,<br>
>>>>>>>>>>>> $pass,<br>
>>>>>>>>>>>> { AutoCommit =>
1 });<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> my $sth =
$dbh->prepare('SELECT CPE_ID, CLIENTE_ID, CPE_DESC,<br>
>>>>>>>>>>>> CPE_IP_WAN, CPE_NODE,
CPE_IF FROM MAC_CPE WHERE CPE_PING = ? AND<br>
>>>>>>>>>>>> CPE_ATIVO = ?');<br>
>>>>>>>>>>>> $sth->execute('1',
'A');<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> my @cpes;<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> while (my (@row) =
$sth->fetchrow_array) {<br>
>>>>>>>>>>>> push @cpes, [ @row
];<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> $dbh->disconnect();<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> my $maxThreads = 250;<br>
>>>>>>>>>>>> my $total = @cpes;<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> my $cpePerThread =
int($total / $maxThreads);<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> my @toMonitor;<br>
>>>>>>>>>>>> my $i = 0;<br>
>>>>>>>>>>>> my $c = 0;<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> foreach my $cpe
(@cpes) {<br>
>>>>>>>>>>>> push
@{$toMonitor[$i]}, $cpe;<br>
>>>>>>>>>>>> $c++;<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> if ($c>
$cpePerThread) {<br>
>>>>>>>>>>>> $i++;<br>
>>>>>>>>>>>> $c = 0;<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> print "Para $total
cpes, e $maxThreads threads, tenho no final<br>
>>>>>>>>>>>> $i<br>
>>>>>>>>>>>> grupos, com ", scalar
@{$toMonitor[0]}, " elementos cada\n";<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> sub processResult {<br>
>>>>>>>>>>>> my $r = shift;<br>
>>>>>>>>>>>> if (ref $r ne
'ARRAY') {<br>
>>>>>>>>>>>> print STDERR
"Erro na thread\n";<br>
>>>>>>>>>>>> return 0;<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>> my ($result,
$host, $ifs) = @$r;<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> sub testeClient {<br>
>>>>>>>>>>>> my $threadNum =
shift;<br>
>>>>>>>>>>>> my $cpeGroup =
shift;<br>
>>>>>>>>>>>> foreach my $cpe
(@{$cpeGroup}) {<br>
>>>>>>>>>>>> my ($cpeId,
$clientId, $cpeDesc, $cpeIp, $cpeNode,<br>
>>>>>>>>>>>> $cpeIf)<br>
>>>>>>>>>>>> =<br>
>>>>>>>>>>>> @$cpe;<br>
>>>>>>>>>>>> my $pingOk
=&checkIp($cpeIp);<br>
>>>>>>>>>>>> my $status =
$pingOk ? 'RESPONDE' : 'MORTO';<br>
>>>>>>>>>>>> # print
join(", ", $threadNum, $cpeId, $clientId,<br>
>>>>>>>>>>>> $cpeDesc,<br>
>>>>>>>>>>>> $cpeIp, $cpeNode,
$cpeIf, $status), "\n";<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>> # print "Finishing
thread $threadNum\n";<br>
>>>>>>>>>>>> return([1, 0]);<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> my $threadCount = 1;<br>
>>>>>>>>>>>> foreach my $cpeGroup
(@toMonitor) {<br>
>>>>>>>>>>>> print "Trying to
create thread";<br>
>>>>>>>>>>>> my $t0 =
[gettimeofday];<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> print " in ",
scalar localtime $t0->[0], ".", $t0->[1],<br>
>>>>>>>>>>>> "\n";<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> my $thr =
threads->create({scalar => '1'},<br>
>>>>>>>>>>>> 'testeClient',<br>
>>>>>>>>>>>> $threadCount,
$cpeGroup);<br>
>>>>>>>>>>>> my $elapsed =
tv_interval ( $t0, [gettimeofday]);<br>
>>>>>>>>>>>> print "Created
thread $thr ($threadCount) - took $elapsed<br>
>>>>>>>>>>>> seconds<br>
>>>>>>>>>>>> to create\n";<br>
>>>>>>>>>>>> $threadCount++;<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> while
(threads->list()>= $maxThreads) {<br>
>>>>>>>>>>>> my @joinable =
threads->list(threads::joinable);<br>
>>>>>>>>>>>> for
(@joinable) {<br>
>>>>>>>>>>>> my $r =
$_->join();<br>
>>>>>>>>>>>> &processResult($r);<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>> usleep(10000);<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>> my $elapsed =
tv_interval ( $t0, [gettimeofday]);<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> while
(threads->list()) {<br>
>>>>>>>>>>>> my @joinable =
threads->list(threads::joinable);<br>
>>>>>>>>>>>> for (@joinable) {<br>
>>>>>>>>>>>> my $r =
$_->join();<br>
>>>>>>>>>>>> &processResult($r);<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>> usleep(10000);<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> sub checkIp {<br>
>>>>>>>>>>>> my $ip = shift;<br>
>>>>>>>>>>>> my $pingOk = 0;<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> eval {<br>
>>>>>>>>>>>> for (1..3) {<br>
>>>>>>>>>>>> my $ping =
`/bin/ping -c 1 -w 1 $ip`;<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> if (grep {
/ 0% packet loss/ } $ping) {<br>
>>>>>>>>>>>>
$pingOk = 1;<br>
>>>>>>>>>>>> return
1;<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> if
($pingOk == 0) {<br>
>>>>>>>>>>>> my $p
= Net::Ping->new('icmp');<br>
>>>>>>>>>>>>
$p->service_check(1);<br>
>>>>>>>>>>>> if
($p->ping($ip, 1)) {<br>
>>>>>>>>>>>>
$pingOk = 1;<br>
>>>>>>>>>>>>
return 1;<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> if
($pingOk == 0) {<br>
>>>>>>>>>>>> my $p
= Net::Ping->new('udp');<br>
>>>>>>>>>>>>
$p->service_check(1);<br>
>>>>>>>>>>>> if
($p->ping($ip, 1)) {<br>
>>>>>>>>>>>>
$pingOk = 1;<br>
>>>>>>>>>>>>
return 1;<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> sleep 3;<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>> };<br>
>>>>>>>>>>>><br>
>>>>>>>>>>>> return $pingOk;<br>
>>>>>>>>>>>> }<br>
>>>>>>>>>>>>
_______________________________________________<br>
>>>>>>>>>>>> Rio-pm mailing list<br>
>>>>>>>>>>>> <a
moz-do-not-send="true" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>>>>>>>>>>>> <a
moz-do-not-send="true"
href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
>>>>>>>>>>>><br>
>>>>>>>>>>>><br>
>>>>>>>>>>>><br>
>>>>>>>>>>>><br>
>>>>>>>>>>>><br>
>>>>>>>>>>> --<br>
>>>>>>>>>>> What is the sound of Perl?
Is it not the sound of a wall that<br>
>>>>>>>>>>> people<br>
>>>>>>>>>>> have<br>
>>>>>>>>>>> stopped banging their
heads against?<br>
>>>>>>>>>>> —Larry Wall<br>
>>>>>>>>>>><br>
>>>>>>>>>>> Thiago Glauco Sanchez<br>
>>>>>>>>>>> Intrutor Perl e Redes<br>
>>>>>>>>>>> <a moz-do-not-send="true"
href="http://www.ticursos.net" target="_blank">www.ticursos.net</a><br>
>>>>>>>>>>><br>
>>>>>>>>>>>
_______________________________________________<br>
>>>>>>>>>>> Rio-pm mailing list<br>
>>>>>>>>>>> <a moz-do-not-send="true"
href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>>>>>>>>>>> <a moz-do-not-send="true"
href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
>>>>>>>>>>><br>
>>>>>>>>>>><br>
>>>>>>>>>>><br>
>>>>>>>>>>><br>
>>>>>>>>>>
_______________________________________________<br>
>>>>>>>>>> Rio-pm mailing list<br>
>>>>>>>>>> <a moz-do-not-send="true"
href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>>>>>>>>>> <a moz-do-not-send="true"
href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
>>>>>>>>>><br>
>>>>>>>>>><br>
>>>>>>>>>><br>
>>>>>>>>>><br>
>>>>>>>>> --<br>
>>>>>>>>> What is the sound of Perl? Is it
not the sound of a wall that<br>
>>>>>>>>> people<br>
>>>>>>>>> have<br>
>>>>>>>>> stopped banging their heads
against?<br>
>>>>>>>>> —Larry Wall<br>
>>>>>>>>><br>
>>>>>>>>> Thiago Glauco Sanchez<br>
>>>>>>>>> Intrutor Perl e Redes<br>
>>>>>>>>> <a moz-do-not-send="true"
href="http://www.ticursos.net" target="_blank">www.ticursos.net</a><br>
>>>>>>>>><br>
>>>>>>>>>
_______________________________________________<br>
>>>>>>>>> Rio-pm mailing list<br>
>>>>>>>>> <a moz-do-not-send="true"
href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>>>>>>>>> <a moz-do-not-send="true"
href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>
_______________________________________________<br>
>>>>>>>> Rio-pm mailing list<br>
>>>>>>>> <a moz-do-not-send="true"
href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>>>>>>>> <a moz-do-not-send="true"
href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>
_______________________________________________<br>
>>>>>>> Rio-pm mailing list<br>
>>>>>>> <a moz-do-not-send="true"
href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>>>>>>> <a moz-do-not-send="true"
href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>> --<br>
>>>>>> What is the sound of Perl? Is it not the sound
of a wall that people<br>
>>>>>> have<br>
>>>>>> stopped banging their heads against?<br>
>>>>>> —Larry Wall<br>
>>>>>><br>
>>>>>> Thiago Glauco Sanchez<br>
>>>>>> Intrutor Perl e Redes<br>
>>>>>> <a moz-do-not-send="true"
href="http://www.ticursos.net" target="_blank">www.ticursos.net</a><br>
>>>>>><br>
>>>>>> _______________________________________________<br>
>>>>>> Rio-pm mailing list<br>
>>>>>> <a moz-do-not-send="true"
href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>>>>>> <a moz-do-not-send="true"
href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
>>>>>><br>
>>>>>><br>
>>>>> _______________________________________________<br>
>>>>> Rio-pm mailing list<br>
>>>>> <a moz-do-not-send="true"
href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>>>>> <a moz-do-not-send="true"
href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
>>>>><br>
>>>>><br>
>>>><br>
>>>> --<br>
>>>> What is the sound of Perl? Is it not the sound of a
wall that people<br>
>>>> have<br>
>>>> stopped banging their heads against?<br>
>>>> —Larry Wall<br>
>>>><br>
>>>> Thiago Glauco Sanchez<br>
>>>> Intrutor Perl e Redes<br>
>>>> <a moz-do-not-send="true"
href="http://www.ticursos.net" target="_blank">www.ticursos.net</a><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> Rio-pm mailing list<br>
>>>> <a moz-do-not-send="true" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>>>> <a moz-do-not-send="true"
href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
>>>><br>
>>> _______________________________________________<br>
>>> Rio-pm mailing list<br>
>>> <a moz-do-not-send="true" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>>> <a moz-do-not-send="true"
href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
>>><br>
>><br>
>><br>
><br>
><br>
> --<br>
> What is the sound of Perl? Is it not the sound of a wall that
people have<br>
> stopped banging their heads against?<br>
> —Larry Wall<br>
><br>
> Thiago Glauco Sanchez<br>
> Intrutor Perl e Redes<br>
> <a moz-do-not-send="true" href="http://www.ticursos.net"
target="_blank">www.ticursos.net</a><br>
><br>
> _______________________________________________<br>
> Rio-pm mailing list<br>
> <a moz-do-not-send="true" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
> <a moz-do-not-send="true"
href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
><br>
_______________________________________________<br>
Rio-pm mailing list<br>
<a moz-do-not-send="true" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a moz-do-not-send="true"
href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
Bruno C. Buss<br>
<a moz-do-not-send="true" href="http://brunobuss.wordpress.com/">http://brunobuss.wordpress.com/</a><br>
<a moz-do-not-send="true" href="http://www.dcc.ufrj.br/%7Ebrunobuss/">http://www.dcc.ufrj.br/~brunobuss/</a><br>
</div>
<pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
Rio-pm mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a>
<a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a></pre>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
What is the sound of Perl? Is it not the sound of a wall that people have
stopped banging their heads against?
—Larry Wall
Thiago Glauco Sanchez
Intrutor Perl e Redes
<a class="moz-txt-link-abbreviated" href="http://www.ticursos.net">www.ticursos.net</a>
</pre>
</body>
</html>