[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