要获取命令的输出,请使用
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表示成功.如果返回值不为0,则subprocess.check_call将引发错误.要抑制输出,请重定向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
通常,使用子进程调用,正如文档所描述的那样,它旨在替换os.system.