[英]Combining two ping command in Linux
我有两个有效的命令,用于检查设备的启动/关闭并复制丢包值。
用于上下检查设备
result = os.system ("ping -c 5 " +hostname)
为了复制丢包值,我用
packetloss = os.popen ("ping -c 5 " +hostname+ "| grep -oP '\d+(?=% packet loss)'").read().rstrip()
packetloss = int(packetloss)
我知道使用os.system不切实际。 我的问题是如何结合这两个命令? 现在,我需要两次ping通才能使设备启动/关闭,并需要再次ping通以检查数据包丢失值。 我怎么能ping一次才能得到两个结果?
使用子流程。 然后,您可以直接解析所需的字符串。
编辑: python脚本已更新。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.