import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)#防止scapy模块出现错误而生成的日志import ipaddress #整理IPimport time #时间模块import multiprocessing #使用多进程模块from ping_one import ping_one #导入执行发包模块from scapy.allimport*import sys,os
defscany_ping_scan(network):
net =ipaddress.ip_network(network)#分析数据中的IP地址
ip_processes={}#进程字典for ip in net:#迭代提取net中的数据给 ip
ip_addr=str(ip)#把每一个读取多IP转换成字符串
scan_prin_one=multiprocessing.Process(target=ping_one,args=(ip_addr,))#开启多进程 target使用这个函数 并用args把ip_addr中的数据添加进去
scan_prin_one.start()#开启这个进程
ip_processes[ip_addr]=scan_prin_one#把这些进程放进这个字典中
ip_list=[]#设置一个成功列表for ip,process in ip_processes.items():if process.exitcode ==3:#退出码为3表示ping成功
ip_list.append(ip)#把存活多IP地址追加到ip_list列表中else:
process.terminate()returnsorted(ip_list)if __name__=='__main__':import time
t1=time.time()
activ_ip=scany_ping_scan(sys.argv[1])print('存活的IP地址如下:')for ip in activ_ip:print(ip)
t2=time.time()print(t2-t1)