Python: ping网段内所有ip并返回结果

今天用Python写了一段小代码,实现的功能是ping某一个网段的所有ip,然后将ping的结果提取出来,输出可以ping通的ip以及往返时间。

初学Python,写得简陋,各位大侠多多指教。

  1. 正则表达式请根据自己的系统进行调整,我这个是中文win7下的结果
  2. Python3.3下测试没问题
  3. ping测试的过程中内存占用较大,不知道可以怎么改进
__author__ = ‘wucl‘

import subprocess, re, _thread, queue, time, threading

print(‘Ping Processing, Please Wait...‘)

regex=re.compile(‘最短 = (\d+)ms,最长 = (\d+)ms,平均 = (\d+)ms‘)
ipPrefix=‘192.168.1.‘
decoding=‘gbk‘

def ping(ip):
    p=subprocess.Popen([‘ping.exe‘,ip],stdout=subprocess.PIPE)
    out=p.stdout.read()
    result=regex.findall(out.decode(decoding))
    if result:
        printQueue.put(‘%15s    最短=%2dms,最长=%2dms,平均=%2dms‘ %(ip,int(result[0][0]),int(result[0][1]),int(result[0][2])))
        return (ip,result[0])

def resultPrint(printQueue):
    while True:
        try:
            data=printQueue.get()
        except queue.Empty:
            pass
        else:
            with safeprint:
                print(data)

printQueue=queue.Queue()
safeprint=_thread.allocate_lock()
thread=threading.Thread(target=resultPrint,args=(printQueue,))
thread.daemon=True
thread.start()

waitfor=[]

for i in range(1,255):
    ip=ipPrefix+str(i)
    thread=threading.Thread(target=ping,args=(ip,))
    waitfor.append(thread)
    thread.start()

for thread in waitfor:
    thread.join()

print(‘Ping End.‘)
input(‘Press Enter to quit.‘)

Python: ping网段内所有ip并返回结果,布布扣,bubuko.com

时间: 2024-10-12 13:48:01

Python: ping网段内所有ip并返回结果的相关文章

php计算网段内所有IP,分配子网段

由于最近业务需要,写了个获取网段内所有IP的函数,以及分配可用子网段的函数 /** * 根据网段获取计算所有IP * @param string $segment 网段 '139.217.0.1/24' * @return array IP列表 ['139.217.0.1','139.217.0.2'--] */ function getIpBySegment($segment) { $segmentInfo = explode("/", $segment);//['139.217.0

shell 检查网段内的IP使用情况,并进行统计

#!/bin/bash # 北京Linux技术交流群:76109360 n=0 s=0 for(( i=1; i <= 10; i++ )) do     if ping -c 1 -W 1 192.168.1.$i > /dev/null; then         echo -e "\033[31m192.168.1.$i yes\033[0m"         let n=$n+1     else         echo -e "\033[32m192.

python 检测某网段已用ip和未使用的ip

借鉴了前辈的博客,然后自己加了很多东西. 其中用到了subprocess模块 >>> import subprocess >>> p = subprocess.Popen('df -h',stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) #获取命令执行结果的返回码,通过wait()函数 >>> p.wait() 0 #获取命令输出结果(标准输出

彻查网络局部网段内Ping时断时续的问题

前两天须要安装2台server,结果前期一直有问题的网络又来了,明明vlan内能ping通,可是与vlan外却ping不同. 这个现象非常像是arp病毒,于是周末的时间我们就进行了一次彻底的排查,一定要找出问题的根源.鉴于这个网络问题跟硬件的关系也非常大,我们还专门请来了网络设备供应商的网络技术project师. 为了降低干扰,将本来执行的上网行为软件关闭,以免因为软件管控影响兴许的推断. 通过把本网段内的计算机逐个关闭或者断网.最后仅仅保留后安装的一台server,这时再ping的时候仍然有问

shell 脚本:ping一个网段的所有ip 和 隔一秒显示当前的时间

环境是 centos7  /bin/bash 注意在复制测试时,务必将示例中的ip网段更改为自己的ip网段. ctrl+z可以将脚本打入后台,然后查看进程kill掉. 1. #!/bin/bash for i in {1..254} #定义1到254 do HOST=192.168.168.$i ping -c 2 $HOST &>/dev/null if [ $? -eq 0 ];then  # -eq 判断返回值是否为0 $?为0表示执行结果正确 echo "$HOST IS

ping一个网段内所有命令的批处理命令

for /l %%p  in (x,1,y) do @ping 192.168.1.%%p -n 1  >> c:\1.txt 保存为1.bat,其中比如ping 192.168.1.1~192.168.1.255,则x为1,y为255. 输出在C盘下面1.txt.每次ping一个包. 然后再在命令行下面运行arp -a 即可查看该网段内所有主机mac——ip对应表 ping一个网段内所有命令的批处理命令

python运维----检测主机IP ping不通则发邮件

第一章:对ip.txt文件中IP地址进行ping操作,对于ping不通的,发送邮件至对应的邮箱 1 #!/usr/bin/env python3 2 #coding: utf-8 3 4 #第一步:将对应的iping不通的p地址弄到noping.txt文件中 5 6 import commands 7 import os 8 import smtplib 9 import email.MIMEMultipart# import MIMEMultipart 10 import email.MIME

Python获取内网IP

Python 获取本机内网IP 本文记录使用Python获取本机IP的两种方法. 通过hostname来获取本机IP import socket print(socket.gethostbyname(socket.gethostname())) 此方法是先获取hostname,然后在通过hostname来查看本机的IP.不推荐此方法,因为若是在/etc/hosts中将hostnam设置为127.0.0.1,那么获取到的就是127.0.0.1,而非本机的真实IP. 通过UDP获取本机IP impo

ping命令基于ICMP协议的返回信息分析

Ping是潜水艇人员的专用术语,表示回应的声纳脉冲,在网络中 Ping 是一个十分好用的 TCP/IP 工具.它主要的功能是用来检测网络的连通情况和分析网络速度.可以利用 PING 命令检查网络连通状态,ping命令是基于ICMP. 这里先介绍ICMP.ICMP是网络层协议,一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通:但是IP协议并不提供可靠传输.如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因.所以我们就需要一种协议来完成这样的功能–ICMP协议 1.ICM