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

import subprocess
import threading
import time
import re

ip_num = 256
list_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值