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中可以发生异常自动重试库retrying

    python中可以发生异常自动重试库retrying

    这篇文章主要介绍了python中可以发生异常自动重试库retrying,retrying是一个极简的使用Python编写的库,主题更多相关内容需要的朋友可以参考一下
    2022-06-06
  • 使用pycharm进行绘图,图片无法显示的解决

    使用pycharm进行绘图,图片无法显示的解决

    这篇文章主要介绍了使用pycharm进行绘图,图片无法显示的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 使用Python来开发微信功能

    使用Python来开发微信功能

    这篇文章主要介绍了使用Python来开发微信功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • 什么是python的列表推导式

    什么是python的列表推导式

    在本篇文章里小编给大家分享了关于python列表推导式的含义及用法,需要的朋友们可以参考下。
    2020-05-05
  • python嵌套字典比较值与取值的实现示例

    python嵌套字典比较值与取值的实现示例

    这篇文章主要给大家介绍了关于python嵌套字典比较值与取值的实现方法,详细介绍了python字典嵌套字典的情况下获取某个key的value的相关内容,分享出来供大家参考学习,需要的朋友们下面来一起看看吧。
    2017-11-11
  • 关于opencv读取和写入路径有汉字的处理方式

    关于opencv读取和写入路径有汉字的处理方式

    这篇文章主要介绍了关于opencv读取和写入路径有汉字的处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python yield 的使用浅析

    Python yield 的使用浅析

    这篇文章主要为大家详细介绍了Python yield的使用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • Python使用numpy模块创建数组操作示例

    Python使用numpy模块创建数组操作示例

    这篇文章主要介绍了Python使用numpy模块创建数组操作,结合实例形式分析了Python使用numpy模块实现数组的创建、赋值、修改、打印等相关操作技巧与注意事项,需要的朋友可以参考下
    2018-06-06
  • Python实现图像添加水印的方法

    Python实现图像添加水印的方法

    在日常图像处理中,为图片添加水印是一项常见任务,本文主要介绍了Python实现图像添加水印的方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Python的闭包和装饰器你真的了解吗

    Python的闭包和装饰器你真的了解吗

    这篇文章主要为大家详细介绍了Python的闭包和装饰器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02

最新评论