python 批量ping一个网段 返回结果 的程序

来源:互联网 发布:caffe咖啡 编辑:程序博客网 时间:2024/04/20 00:28
import subprocessimport threadingimport timeimport reip_num = 256list_ping_result = []class PingThread(threading.Thread):        def __init__(self,str_ip,sleep_time,g_list_p_r):        threading.Thread.__init__(self)        self.sleep_time = sleep_time        self.str_ip = str_ip        self.list_p_r = g_list_p_r    def run(self):        time.sleep(self.sleep_time)        ftp_sub = subprocess.Popen("ping %s -n 3" % self.str_ip,                                  stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)        ret = ftp_sub.stdout.read()        str_ret = ret.decode("gbk")        ret_s = re.search("TTL",str_ret)        if ret_s:            self.list_p_r.append(('ping    ok',self.str_ip))        else:            self.list_p_r.append(('ping error',self.str_ip))            def cmp_s(toupe_str):    str_val = toupe_str[1]    ret_group = re.match("\d*",str_val[::-1])    str_ret = ret_group.group()    return int(str_ret[::-1])thread_id =[]for i in range(ip_num):    thread_id.append(0)    thread_id[i] = PingThread("192.168.8.%d" % i, int(i/20),list_ping_result)    thread_id[i].start()    print(i,end='')while True:    if len(list_ping_result) >= ip_num:        list_ping_result.sort(key=cmp_s)        for i in list_ping_result:            print(i)        break

0 0