我如何抑制ping上的终端输出,但仍然能够验证响应?

时间:2019-04-16 09:24:59

标签: python

因此,每当我发送数据包时,我一直在努力抑制终端输出。我只想验证响应(否则为0,2),这样我的终端就不会收到标准的“ ping统计信息,收到的数据包,数据包丢失”的垃圾邮件。我将如何执行此代码明智的工作?我不是在寻找终端/ bash的“方式”。

def ping():
    hosts = open('hosts.txt', 'r')
    for host_ip in hosts:
       res = subprocess.call(['ping', '-c', '1', host_ip])
       if res == 0:
          print "ping to", host_ip, "OK"
       elif res == 2:
          print "no response from", host_ip
       else:
          print "ping to", host_ip, "failed!"

1 个答案:

答案 0 :(得分:1)

我刚刚使用python的subprocess.Popen类ping到Google dns服务器,除了我在代码中打印的返回码外,它什么都没有返回终端。

import subprocess
process = subprocess.Popen(['ping','-c' ,'1', '8.8.8.8'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
returncode = process.returncode
print(returncode)

输出

0