Mais um blog inútil.

Junho 20, 2012

Blocos de endereçamento IP por país

Filed under: Coding,Useless — thread @ 6:46

Bom dia malta das inutilidades.

Venho aqui partilhar mais uma das minhas muitas inutilidades... um escripe em pitão inútil que faz a consulta online de ip address blocks atribuidos a um determinado pais e devolve uma lista dos mesmos.
No site onde faço o request, têm a versão csv disponivel também... mas isso não tem piada e não é inútil pois não poderia usar um html parser e a coisa ia ficar assim meia deslavada e desenquadrada no blol.

A sintaxe não poderia ser mais simples:

$ ./escripe.py acronimo

Eg:

$ ./escripe.py pt
(e receberão uma lista de blocos (um bloco por linha) no formato "from X to Y")

Cá vai:


#!/usr/bin/python

import sys
import httplib
import re
from HTMLParser import HTMLParser

raw_block_list = []

class ORHTMLParser(HTMLParser):
        def handle_data(self, data):
                pat = re.search(r"^((\d{1,3}\.){3,3}\d{1,3})$", data.strip(' '))

                if pat:
                        raw_block_list.append(pat.group(1))

if len(sys.argv) != 2:
        print "Usage: %s <country acronym>\nExamples:\n\t%s pt\n\t%s fr\n\t%s us" % (eval("sys.argv[0]," * 4))
        sys.exit(1)

try:
        rhost = httplib.HTTPConnection("www.nirsoft.net")
        rhost.request("GET", "/countryip/%s.html" % sys.argv[1])
        pbody = rhost.getresponse().read()
        rhost.close()
except:
        print "Ops..."
        sys.exit(1)

ORHTMLParser().feed(pbody)

paired_block_list = map(lambda start, end: (start, end), raw_block_list[0::2], raw_block_list[1::2])

for pair in paired_block_list:
        print "from", pair[0], "to", pair[1]

Saudações

Um comentário a “Blocos de endereçamento IP por país”

  1. falso diz:

    Amo ali o lambda, alta profundidade!

Comentar

widgeon
widgeon
widgeon
widgeon