Python执行ping操作的简单方法

 更新时间:2023年02月14日 09:17:38   作者:田辛 | 田豆芽  
本文主要介绍了Python执行ping操作的简单方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1 基本信息

- 模块主页:[github]
- 类型:#第三方库

2 安装方法

pip install pythonping

3 一般使用

from pythonping import ping

@timer  
def case1():  
    return (ping('www.baidu.com', verbose=True))  
@timer  
def case2():  
    return ping('www.baidu.com', verbose=False)

verbose=True:意味着输出平的执行过程,测试Case1:

--------------------------------------------------------------------------------
[case1] start at 2023-02-12 07:45:48.366523
Reply from 110.242.68.4, 29 bytes in 11.75ms
Reply from 110.242.68.4, 29 bytes in 11.33ms
Reply from 110.242.68.4, 29 bytes in 11.32ms
Reply from 110.242.68.4, 29 bytes in 11.33ms
函数[case1]执行时间为:0.05608487129211426
函数[case1]执行结果为:
Reply from 110.242.68.4, 29 bytes in 11.75ms
Reply from 110.242.68.4, 29 bytes in 11.33ms
Reply from 110.242.68.4, 29 bytes in 11.32ms
Reply from 110.242.68.4, 29 bytes in 11.33ms

Round Trip Times min/avg/max is 11.32/11.43/11.75 ms
[case1] end at 2023-02-12 07:45:48.422608
--------------------------------------------------------------------------------

 verbose=False:意味着不输出执行过程,测试Case2:

--------------------------------------------------------------------------------
[case2] start at 2023-02-12 07:45:48.422608
函数[case2]执行时间为:0.04709315299987793
函数[case2]执行结果为:
Reply from 110.242.68.4, 29 bytes in 11.41ms
Reply from 110.242.68.4, 29 bytes in 11.56ms
Reply from 110.242.68.4, 29 bytes in 12.15ms
Reply from 110.242.68.4, 29 bytes in 11.75ms

Round Trip Times min/avg/max is 11.41/11.72/12.15 ms
[case2] end at 2023-02-12 07:45:48.470690
--------------------------------------------------------------------------------

可以看出,case1有执行过程,但是case2没有。

4 ping的返回值

ping的返回值是一个ResponseList对象,既然叫做List那么肯定是可以枚举的。 我们来测试一下:

@timer  
def case3():  
    print("STEP 1: ping www.baidu.com")  
    ping_rst = ping('www.baidu.com', verbose=False)  
  
    print("ping返回值的数据类型是:%s" % type(ping_rst))  
  
    print("STEP 2: 遍历ResponseList对象的所有属性")  
    for ping_item in ping_rst.__dict__:  
        print("[%s]:%s" % (ping_item, ping_rst.__dict__[ping_item]))  
  
    print("STEP 3: 遍历Response对象的所有属性")  
    cnt = 1  
    for response_item in ping_rst:  
        print("STEP 3-%s. Resoonse对象" % cnt)  
        cnt += 1  
        for item in response_item.__dict__:  
            print("[%s]:%s" % (item, response_item.__dict__[item]))

4.1 返回值类型以及常用属性

在例程3中, 第一步是执行ping函数,并且取得他的返回值。

第一步的返回结果是:

STEP 1: ping www.baidu.com
ping返回值的数据类型是:<class 'pythonping.executor.ResponseList'>

以上表明, 返回的是pythonping内部定义的一个对象。 既然如此,我们接下来看看一下这个对象的属性,执行结果如下:

STEP 2: 遍历ResponseList对象的所有属性
[_responses]:[Reply from 110.242.68.4, 29 bytes in 11.68ms, Reply from 110.242.68.4, 29 bytes in 11.39ms, Reply from 110.242.68.4, 29 bytes in 11.51ms, Reply from 110.242.68.4, 29 bytes in 11.82ms]
[stats_packets_sent]:4
[stats_packets_returned]:4
[verbose]:False
[output]:<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
[rtt_avg]:0.01159732499945676
[rtt_min]:0.011385000019799918
[rtt_max]:0.011815299978479743

在这次遍历中,有一个内部属性_responses实际上就是4此ping请求的信息。 这里我们日常使用比较多的。就是三个rtt开头的值,只是用方法直接作为属性读取即可。
关于RTT这个缩写,我读了pythonping的源码,并灭有给出详细的解释。 于是我请教了ChatGPT,它的回答是:

RTT代表往返时间(Round Trip Time),即数据包从源传输到目的地再返回所需的时间。RTT通常用于测量网络延迟和网络连接质量。在网络通信的上下文中,RTT是指从发送请求到接收相应响应之间经过的时间。

4.2 ResponseList中的每个Response对象的属性

这部分内容在STEP 3中, 我遍历了所有的属性:

STEP 3-1. Resoonse对象
[message]:45 00 00 1d c1 52 00 00 35 01 1e 03 6e f2 44 04 c0 a8 32 ec 00 00 46 f9 7f 06 01 00 39
[time_elapsed]:0.01167790000909008
[source_request]:08 00 3e f9 7f 06 01 00 39
[repr_format]:legacy
STEP 3-2. Resoonse对象
......

这里面有4个属性:

  • message: 发送的内容
  • time_elapsed: 时间
  • source_request:接收的信息
  • repr_format: 如何将返回值变为文字列。 有两个可能的属性legacy以及None

4.3 pythonping.ping() 方法的常用形参包括:

  • hostname: 目标主机的域名或 IP 地址
  • size: 发送的数据的大小,以字节为单位。默认为 56 字节
  • count: 要发送的请求的数量。默认为 4 次
  • timeout: 超时时间,以秒为单位。默认为 1s
  • verbose: 布尔值,用于指示是否显示详细的输出。默认为 False

到此这篇关于Python执行ping操作的简单方法的文章就介绍到这了,更多相关Python执行ping操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中的装饰器该如何使用

    python中的装饰器该如何使用

    装饰器经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。装饰器的作用就是为已经存在的对象添加额外的功能。
    2021-06-06
  • Python httpstat命令行工具功能使用探索

    Python httpstat命令行工具功能使用探索

    Python httpstat是一个强大的命令行工具,用于深入了解HTTP请求的性能和状态信息,本文将介绍Python httpstat的基本用法、功能特性、示例代码以及实际应用场景,帮助大家更好地理解和利用这个有用的工具
    2024-01-01
  • python time模块定时器由浅入深应用实例

    python time模块定时器由浅入深应用实例

    Python提供了多种实现定时任务的方法,从简单到复杂,包括使用标准库time模块的基础定时,threading或asyncio模块的多线程/异步定时,以及第三方库如APScheduler的高级定时任务调度
    2024-01-01
  • 基于python实现rpc远程过程调用

    基于python实现rpc远程过程调用

    本文主要介绍了基于python实现rpc远程过程调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Python tkinter界面实现历史天气查询的示例代码

    Python tkinter界面实现历史天气查询的示例代码

    这篇文章主要介绍了Python tkinter界面实现历史天气查询的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Django压缩静态文件的实现方法详析

    Django压缩静态文件的实现方法详析

    最近在学习Django配置静态文件,下面这篇文章主要给大家介绍了关于Django压缩静态文件的实现方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-08-08
  • python绘制带有色块的折线图

    python绘制带有色块的折线图

    这篇文章主要为大家详细介绍了python绘制带有色块的折线图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Python数据合并的concat函数与merge函数详解

    Python数据合并的concat函数与merge函数详解

    大家都知道concat()函数可以沿着一条轴将多个对象进行堆叠,其使用方式类似数据库中的数据表合并,在使用merge()函数进行合并时,默认会使用重叠的列索引做为合并键,即取行索引重叠的部分,本文给大家介绍python 数据合并concat函数与merge函数,感兴趣的朋友一起看看吧
    2022-05-05
  • 利用python批量给云主机配置安全组的方法教程

    利用python批量给云主机配置安全组的方法教程

    这篇文章主要给大家介绍了利用python批量给云主机配置安全组的方法教程,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-06-06
  • Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例

    Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例

    这篇文章主要介绍了Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例,需要的朋友可以参考下
    2020-03-03

最新评论