[SP-pm] [SOURCE CODE] Re: Um índice de utilização para a Linguagem Perl

Brenno Oliveira brenno em bsd.com.br
Quinta Maio 1 16:52:04 PDT 2008


Ola,

peguei a thread andando.. mais seguem meus cents.

2008/5/1 Luis Motta Campos <luismottacampos em yahoo.co.uk>:

> 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 '/'.
>
Varrer 200/8 ou 201/8 ira incluir prefixos de outros paises. para obter
corretamente os prefixos do Brasil:

curl -O ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest
grep BR delegated-lacnic-latest | grep ipv4 | \
	awk -F "\|" '{print $4 "/" (32 - (log($5)/log(2)))}'

 <codigo removido>


> O meu problema agora é que isso é lento que dá dó (mesmo com timeouts
> ridículos como 2s).
>
Outro problema que irá ocorrer usando esta metodologia é que ira pegar
MUITOS dispositivos como routers ou appliances. irá precisar filtrar.
Acredito que a melhor maneira é fazer por amostragem.

mysql> desc banner;
+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| b_id        | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| target_t_id | int(10) unsigned | NO   | PRI | NULL    |                |
| b_port      | int(10) unsigned | YES  |     | NULL    |                |
| b_buf       | varchar(255)     | YES  |     | NULL    |                |
| b_date      | datetime         | YES  |     | NULL    |                |
| b_lock      | tinyint(1)       | YES  |     | NULL    |                |
+-------------+------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

mysql> select count(*) from banner;
+----------+
| count(*) |
+----------+
|    21279 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from banner where b_buf like '%perl%';
+----------+
| count(*) |
+----------+
|      522 |
+----------+
1 row in set (0.03 sec)

mysql> select count(*) from banner where b_buf like '%php%';
+----------+
| count(*) |
+----------+
|     3024 |
+----------+
1 row in set (0.04 sec)

mysql> select count(*) from banner where b_buf like '%python%';
+----------+
| count(*) |
+----------+
|      176 |
+----------+
1 row in set (0.03 sec)

boa parte destes 21k banners são dispositivos de rede que hospedam apenas a
GUI de configuração como por exemplo:
mysql> select count(*) from banner where b_buf like 'micro_httpd';
+----------+
| count(*) |
+----------+
|     1794 |
+----------+
1 row in set (0.03 sec)

mysql> select count(*) from banner where b_buf like '%virata%';
+----------+
| count(*) |
+----------+
|     2810 |
+----------+
1 row in set (0.04 sec)
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20080501/f7b0bd22/attachment.html 


Mais detalhes sobre a lista de discussão SaoPaulo-pm