python 判断网络连通

发布时间:2019-09-22 08:09:12编辑:auto阅读(1718)

    开发中偶尔需要判断网络的连通性,没有什么方法比 ping 更直接了当,通常检查网络情况都是运行命令ping www.baidu.com ,查看输出信息即可。

    C:\Users>ping www.baidu.com
    
    正在 Ping www.baidu.com [61.135.169.125] 具有 32 字节的数据:
    来自 61.135.169.125 的回复: 字节=32 时间=4ms TTL=57
    来自 61.135.169.125 的回复: 字节=32 时间=7ms TTL=57
    来自 61.135.169.125 的回复: 字节=32 时间=9ms TTL=57
    来自 61.135.169.125 的回复: 字节=32 时间=9ms TTL=57
    
    61.135.169.125Ping 统计信息:
        数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
    往返行程的估计时间(以毫秒为单位):
        最短 = 4ms,最长 = 9ms,平均 = 7ms

    简单方法

    python执行批处理用多种方法,考虑到我们仅仅用于验证网络连通性,只需要最终的结果,os.system()方法最合适,执行cmd命令,并返回进程执行退出错误码。

    import os
    
    exit_code = os.system('ping www.baidu.com')
    if exit_code:
        raise Exception('connect failed.')
    

    网络连通 exit_code == 0,否则返回非0值。

    高级方法

    • 获取访问域名的IP地址。正则表达式提取 [61.135.169.125] 数据。
    • 获取网络实际连通的情况。正则表达式提取 TTL时间 判断当前的网络状况。

    使用 subprocess 管道调用的方式获取控制台输出信息,然后在使用正则表达式提取关键数据。

    小结

    相比其他方法判断网络连通性,命令行执行 ping 的方案实现简单、快捷、有效。

关键字