您将如何解析“ping”输出,如下所示:
root@m2m-probe1:~/M2M/src# ping -c 20 -q google.es
PING google.es (173.194.34.247) 56(84) bytes of data.
--- google.es ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19043ms
rtt min/avg/max/mdev = 314.766/381.299/430.826/36.513 ms
用Python?到目前为止我发现的更好的是:
output = subprocess.check_output('ping ' + host + " -c 5 -q | egrep \"packet loss|rtt\"", shell=True)
match = re.search('([\d]*\.[\d]*)/([\d]*\.[\d]*)/([\d]*\.[\d]*)/([\d]*\.[\d]*)', output)
ping_min = match.group(1)
ping_avg = match.group(2)
ping_max = match.group(3)
match = re.search('(\d*)% packet loss', output)
pkt_loss = match.group(1)
它确实有效,但我知道这远不是实现这一目标的最佳方式。有什么建议吗?
提前致谢!
已经有一个纯 python 模块可以做到这一点https://github.com/gg/pingparser https://github.com/gg/pingparser,但是如果您希望出于教学目的实现它,请使用 pyparsing 库。它比正则表达式解析数据要好得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)