写了一使用python multiprocessing实现的net ping工具, 可以ping多个网段的地址, 1024个IP大概需1分钟.
#!/usr/bin/python3
# coding: utf-8
import ipaddress
import csv
from multiprocessing import Pool, Manager
import os
subnets = [
"10.1.2.0/24",
"192.168.1.0/24",
]
manager = Manager()
d = manager.dict()
def ping(ip, d):
cmd = "ping -c 4 -q %s" % ip
return_code = os.system(cmd)
d[ip] = return_code
for subnet in subnets:
pool = Pool(256)
net4 = ipaddress.ip_network(subnet)
for ip in net4:
pool.apply_async(ping, (ip, d, ))
pool.close()
pool.join()
with open("ipalive.csv",'w+', newline='') as csvfile:
writer = csv.writer(csvfile, quoting=csv.QUOTE_NONE)
for k, v in d.items():
if v == 0:
writer.writerow([k, v])