ping multiple Ips with python

darrell dgallion1 at yahoo.com
Sat Jan 4 19:21:07 EST 2003


Didn't mess with the checksum since it works and it's fast enough.
The pyrex code was cool to look at.

Added the following and a thread to improve responsiveness.
Using ipRange(), you can map your network.
Someone could find some traceroute code and find rounters.

I don't need this for hacking. It will help some of my customers.
--Darrell

def expand(v):
    if v.find("*")== -1:
        return [int(v)]
        
    if len(v) ==4:
        v=v.replace("*",'')
        v=int(v)
        return xrange(v,255)
        
    if v=='*':
        return xrange(1,255)
        
    assert int(v[0]) <= 2
    if len(v)==2:
        v+='*'
    vL=int(v.replace('*','0'))
    vH=min(254, int(v.replace('*','9')))
    return xrange(vL,vH+1)
    
    
def testExpand():
    assert list(expand("*"))  ==range(1,255)
    assert list(expand("2*")) ==range(200,255)
    assert list(expand("02*")) ==range(20,30)
    assert list(expand("21*"))==range(210,220)
    assert list(expand("233*"))==range(233,255)
    
testExpand()

def ipRange(val):
    vals=val.split(".")
    secondOctent= expand(vals[2])
    firstOctent = expand(vals[3])
    
    out=[]
    base=[vals[0],vals[1]] # Don't allow '*' in the first two octents
    
    for two in expand(vals[2]):
        for one in expand(vals[3]):
            out.append('.'.join(base+[str(two),str(one)]) )
            
    return out
    






More information about the Python-list mailing list