从文件中读入大量ip地址,再判断各个ip是否可ping通
版本1
import os
import subprocess as sp
def ping_test(inputfile, failfile='', successfile=''):
'''
read IP input file, ping each, write failed ip to failfile
write success ip to successfile
'''
ips= [i.strip() for i in open(inputfile,'r').readlines()]
fails = []
success = []
garb_bin = open(os.devnull,'w')
try:
pings = { sp.Popen(['ping', '-c', '2', '-q', i],
stdout=garb_bin, stderr=garb_bin ):i for i in ips}
except:
os.exit(2)
#loop until pings dict exausted
for c,i in pings.items():
c.wait()
for c,i in pings.items():
if c.returncode == 0:
success.append(i)
else:
fails.append(i)
with open(failfile,'w