要获取命令的输出,请使用subprocess.check_output
。如果命令失败,它将引发错误,因此将其放在一个try
块中。
import subprocess
try:
response = subprocess.check_output(
['ping', '-c', '3', '10.10.0.100'],
stderr=subprocess.STDOUT, # get all output
universal_newlines=True # return string not bytes
)
except subprocess.CalledProcessError:
response = None
若要用于ping
了解地址是否正在响应,请使用其返回值,该值为0表示成功。subprocess.check_call
如果返回值不为0,则将引发并出错。要抑制输出,请重定向stdout
和stderr
。使用Python 3,您可以使用subprocess.DEVNULL
而不是在一个块中打开空文件。
import os
import subprocess
with open(os.devnull, 'w') as DEVNULL:
try:
subprocess.check_call(
['ping', '-c', '3', '10.10.0.100'],
stdout=DEVNULL, # suppress output
stderr=DEVNULL
)
is_up = True
except subprocess.CalledProcessError:
is_up = False