首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合Linux中的两个ping命令

结合Linux中的两个ping命令
EN

Stack Overflow用户
提问于 2016-11-25 07:44:07
回答 1查看 148关注 0票数 0

我有两个工作命令,检查设备上/下和复制数据包丢失值。

为了检查我用过的设备

代码语言:javascript
复制
 result = os.system ("ping -c 5 " +hostname)

对于复制丢包值,我使用了

代码语言:javascript
复制
packetloss = os.popen ("ping -c 5 " +hostname+ "| grep -oP '\d+(?=% packet loss)'").read().rstrip()
packetloss = int(packetloss)

我知道使用os.system是不切实际的。我的问题是如何将这两个命令结合起来?现在,我需要两次ping,仅仅是为了让设备上下运行,另一次ping来检查丢包值。我怎么才能平一次才能得到两个结果呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-25 07:56:58

使用子进程。然后,您可以直接解析所需的字符串。

编辑: python被更新。

代码语言:javascript
复制
import subprocess

output = ""
error = ""
hostname = "www.google.com"
try:
    cmd = "ping -c 5 " + hostname
    p = subprocess.Popen([cmd], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
    output = str(p[0])
    error = str(p[1])
except Exception, e:
    error = str(e)

if output:
    data = output.split("--- " + hostname + " ping statistics ---")
    print "\nPing output:\n", data[0].strip() 
    statistics = data[-1].strip()
    print "\nStatistics:\n", statistics
    packetloss = str(statistics.splitlines()[0]).split(",")
    packetloss = packetloss[2].strip()
    packetloss = packetloss[:packetloss.find("%")]
    print "\nPacketLoss:", packetloss
if error:
    print "\nError:", error
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40799978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档