这是我的代码来检查与主机相关的状态,我只是想打印状态(上/下),并避免在终端上显示整个ping程序。简化和减少不必要的输出显示
import os
hostname = "google.com"
response = os.system("ping -c 1" + hostname)
if response == 0:
print hostname, 'up'
else:
print hostname, 'down'
这是我的代码来检查与主机相关的状态,我只是想打印状态(上/下),并避免在终端上显示整个ping程序。简化和减少不必要的输出显示
import os
hostname = "google.com"
response = os.system("ping -c 1" + hostname)
if response == 0:
print hostname, 'up'
else:
print hostname, 'down'
import subprocess
import re
hostname = "google.com"
with subprocess.Popen(["ping", "-c 1", "-t 3", hostname], stdout=subprocess.PIPE) as proc:
match = re.findall(r'1 packets received', proc.stdout.read().decode())
if match:
print(hostname + ' is up')
else:
print(hostname + ' is down')
结果:
google.com is up
对于Python 2.7:
test = subprocess.Popen(["ping", "-c 1", "-t 3", hostname],stdout=subprocess.PIPE)
match = re.findall(r'1 packets received', test.communicate()[0])
if match:
print(hostname + ' is up')
else:
print(hostname + ' is down')
非常感谢... !!! – user7576454
获取此错误“与子进程.Popen([”ping“,”-c 1“,”-t 3“,主机名称,stdout = subprocess.PIPE)为proc: AttributeError:__exit__” – user7576454
@ user7576454没有满追踪......我只能说这是工作代码。旧版本的python在子流程中确实存在一些问题,请检查您所使用的python版本。 – gregory
你好我做了一个这样的。 稍后我会定制这个发送电子邮件。
我随时为你发布。 问候,
进口OS 主机名= “google.com”
如果os.name == 'NT' 或os.name == 'NT': 响应=使用os.system(“平 - N + 1 “+主机名) 否则: 响应=使用os.system(” 平-c 1“+主机名)
如果响应== 0: 打印(主机名, '向上') 否则: 打印(主机名,'down') '''做添加选项发送电子邮件,如果ping失败''
非常感谢... !!! – user7576454
为您做这个工作? – peacengell
有一个可用的类似https://pypi.python.org/pypi/python-ping/那对夫妇的产品使用ICMP。我没有尝试过任何一个。他们要求您在'nix'上拥有root用户身份,或者在Windows上成为管理员。 –
我认为使用python ping库(比尔贝尔提到)是最好的选择。如果你坚持使用os.system,试着重定向你的输出(例如>/dev/null)来隐藏它:'response = os.system(“ping -c 1 {}>/dev/null 2>/dev/null “.format(hostname))' –
宾果...工作...感谢的人... !!! – user7576454