1. 依赖linux工具

linux自带的&守护进程执行的速度比较慢,所以使用了python 的threading多线程,多线程调用了linux的nmap快速扫描局域网可通信主机,使用mtr测试网络质量.

~]# yum install -y nmap mtr
2 python多线程启动mtr
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
 
import threading
import time
import os

ip_net="192.168.4.0/23"

col=['主机','丢包率','包数量','最新延时','平均延时','最小延时','最大延时','方差']
net_hosts=os.popen('nmap -sP %s |egrep -o "((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])"'%ip_net).read()

def run(ip):
    command="mtr -r -n -c 10 %s|grep \"%s\"|awk \'"%(ip,ip)+"{printf \"%-20s %-10s %-10s %-10s %-10s %-10s %-10s %-10s\",$2,$3,$4,$5,$6,$7,$8,$9}\'"    
    result=os.popen(command).read()
    if result:
       print(result)
    time.sleep(2)


print("%-21s %-13s %-13s %-13s %-14s %-14s %-14s %-14s"%(col[0],col[1],col[2],col[3],col[4],col[5],col[6],col[7])) 
for i in net_hosts.split():
    run_task=threading.Thread(target=run,args=(i,))
    run_task.start()

3 运行效果

在这里插入图片描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐