python的 ipv6 自动生成

网上很多数字转ipv4的程序,没有数字转ipv6的。

由于单位测试要用,我先是在网上找了半个小时,没找到。一怒之下,被逼无奈,自己写了一个。贡献出来,正好大家也使用一下吧。

功能:把一个数字转换成ipv6的地址。多大的都行。


#!/usr/bin/python
#-*-coding:utf-8-*- 


import string


base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]


def dec2hex(string_num):
    num = int(string_num)
    mid = []
    while True:
        if num == 0: break
        num,rem = divmod(num, 16)
        mid.append(base[rem])


    return ''.join([str(x) for x in mid[::-1]])
 
def int2ip(ipInt):
    ipStr = ''
    leftValue = ipInt
    for i in [7, 6, 5, 4, 3, 2, 1, 0]:
        ipTokenInt = dec2hex(leftValue / 65536**i)
        if(ipTokenInt==''):
            ipTokenInt = 0
        ipStr = ipStr + str(ipTokenInt)
        if i!=0:
            ipStr = ipStr + ':'
        leftValue %= 65536**i
    return ipStr    

if __name__ == "__main__":
    try:
        file_object = open('ipv6.wlist', 'w')
        n = 400000000000000000000000000000000000
        print 'start ip'+int2ip(n)
        for i in range(999):
            file_object.write(int2ip(n)+'\n')
            n=n+1
        n=n+1
        file_object.write(int2ip(n))
    finally:
        file_object.close()


起始ip的数字 就是那个 40000000000000 就是说 从这个数字开始计算ipv6的。以后每次ipv6 都是数字加1. 写文件到 ipv6.wlist中。

行了,python2的程序。

可以运行,本次亲测,亲自使用的。

你可能感兴趣的:(python)