以C段为单位随机选取IP地址

平时会遇到对不同IP地址进行连通性测试,IP地址太多,只能是根据IP地址以C为单位,每个C选取一个地址进行测试。写个脚本,读取这几万个IP地址,然后以C为单位,每个C随机选出一个IP地来
#!/usr/bin/env Python
# coding=utf-8
import re
import random
'''
根据IP地址,随机选取每个C里面的一个地址来进行ping测试
可以设置一个字典,字典里面根据ip地址的前三段来生成一个列表,每个列表里面存放具体的ip
可以根据列表的长度来生成一个随机数取得一个C里面的ip地址
'''


def get_random_ipaddress():
    # 读取相关的ip地址存放的文件,然后循环读取数据

    file_name = "ip_address.txt"
    with open(file_name, 'r', encoding='utf-8') as file:
        lines = file.readlines()
    file.close()
    # 设置一个字典,存放相关数据
    ip_address = {}
    for line in lines:
        # 去掉空格
        line = line.strip()
        # 进行获取ip的正则表达式,取得ip地址的C段
        ip = re.findall(r'[0-9]+(?:\.[0-9]+){2}', line)
        # 根据IP地址取得C,判断是否已有相关key,有的话就存入相关list,如果没有,要先生成list
        if ip[0] not in ip_address.keys():
            ip_address[ip[0]] = []
        ip_address[ip[0]].append(line)
    # 循环打印字典中每个列表中的随机的一个元素
    for key in ip_address.keys():
        print(ip_address[key][random.randint(0, len(ip_address[key])-1)])


if __name__ == '__main__':
    get_random_ipaddress()

posted @ 2021-06-21 14:14  野生非著名程序员  阅读(334)  评论(0编辑  收藏  举报