以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()