[SP-pm] [SOURCE CODE] Re: Um índice de utilização para a Linguagem Perl
Luis Motta Campos
luismottacampos em yahoo.co.uk
Quinta Maio 1 02:11:18 PDT 2008
Luis Motta Campos wrote:
> Alguém se habilita para o código?
Eu me habilito :D
> Eu sugiro:
>
> LWP
> Iterator
> Net::IP
Sugestão quase toda aceita. O Net::IP tem um iterador incorporado, não é
preciso usar o módulo Iterator. ;)
Me desculpem a demora, a minha máquina de lavar pratos me obrigou a
lavar os pratos eu mesmo, ontem. :D
Aqui tem uma linha que varre a faixa de IPs 200.0.0.0 - 200.255.255.255
e encontra todos os webservers disponíveis nesta faixa, perguntando para
cada um deles os headers para '/'.
perl -MNet::IP -MLWP::UserAgent -le '$ip = Net::IP->new( q{200.0.0.0 -
200.255.255.255} ); $ua = LWP::UserAgent->new( timeout => 2 ); do{ my
$i=$ip->ip; my $r = $ua->head( qq{http://$i} ); print qq{$i - } .
($r->is_success ? $r->header( q{server} ) : $r->status_line ) }while(
++$ip );'
O meu problema agora é que isso é lento que dá dó (mesmo com timeouts
ridículos como 2s).
Uma amostra: eu varri um pedacinho da rede do iG:
200.226.133.70 - 500 Can't connect to 200.226.133.70:80
200.226.133.71 - 500 Can't connect to 200.226.133.71:80
200.226.133.72 - Apache/1.3.28 (Unix) mod_ssl/2.8.15 OpenSSL/0.9.7d
200.226.133.73 - 500 Can't connect to 200.226.133.73:80
200.226.133.74 - Microsoft-IIS/6.0
200.226.133.75 - Apache/2.2.8 (Unix)
200.226.133.76 - 500 Can't connect to 200.226.133.76:80
200.226.133.77 - Microsoft-IIS/6.0
200.226.133.78 - 500 Can't connect to 200.226.133.78:80
200.226.133.79 - 500 Can't connect to 200.226.133.79:80
200.226.133.80 - 500 Can't connect to 200.226.133.80:80
Eu acho que a gente precisa dividir isso em vários processos e em vários
hosts, para agilizar o processo.
Também acho dispensável imprimir mensagens e IPs sobre falhas.
Depois, a gente pode fazer um documento dizendo "95% dos webservers
brazileiros suportam mod_perl na versão XXX".
Quem vai fazer o scan?
* * *
Hum. Consultando http://www.iana.org/assignments/ipv4-address-space, eu
descobri que existe mais faixas interessantes: os IPs alocados para o
LACNIC (RIR da América do Sul e Caribe) são: 186.0.0.0/8, 187.0.0.0/8,
189.0.0.0/8, 190.0.0.0/8, 191.0.0.0/8, 200.0.0.0/8, e 201.0.0.0/8.
Precisamos varrer todos estes ranges.
* * *
Noutra frente de trabalho, me sugeriram para tentar encontrar websites
com ".br" (e que não estão no range 200.0.0.0/8, que a gente já cobriu).
Alguém tem alguma sugestão de como "garimpar" os DNSs "ponto-br"?
Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão SaoPaulo-pm