Python实现Ping命令结果解析与网络状态检测

Miles
Miles
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍如何使用Python的subprocess模块调用系统Ping命令,并结合正则表达式解析返回的中文文本,提取接收包数量、最小、最大及平均延迟时间。代码示例展示了完整的解析逻辑,用于判断网络连通性及性能指标,适用于Windows环境下的网络诊断场景。

前言

本文主要介绍如何利用Python语言解析Ping命令的执行结果,帮助读者掌握网络连通性检测的相关技巧,供学习参考。

具体实现代码如下:

# -*- coding: utf-8 -*-

import subprocess
import re

def get_ping_result(ip_address):
 p = subprocess.Popen(["ping.exe", ip_address], stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = True)
 out = p.stdout.read().decode('gbk')
 
 reg_receive = '已接收 = \d'
 match_receive = re.search(reg_receive, out)
 
 receive_count = -1
 
 if match_receive:
  receive_count = int(match_receive.group()[6:])
 
 if receive_count > 0: #接受到的反馈大于0,表示网络通
  reg_min_time = '最短 = \d+ms'
  reg_max_time = '最长 = \d+ms'
  reg_avg_time = '平均 = \d+ms'
  
  match_min_time = re.search(reg_min_time, out)
  min_time = int(match_min_time.group()[5:-2])
  
  match_max_time = re.search(reg_max_time, out)
  max_time = int(match_max_time.group()[5:-2])
  
  match_avg_time = re.search(reg_avg_time, out)
  avg_time = int(match_avg_time.group()[5:-2])
  
  return [receive_count, min_time, max_time, avg_time]
 else:
  print('网络不通,目标服务器不可达!')
  return [0, 9999, 9999, 9999]
  
if __name__ == '__main__':
 ping_result = get_ping_result('114.80.83.69')
 print(ping_result)

总结

以上就是本文的全部内容,希望这段代码能对你的学习或工作有所帮助。如有任何疑问,欢迎留言交流,感谢支持。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表