我需要编写一个 python 脚本,例如我需要运行命令“systemctl is-enabled autofs”,如果命令的输出是“无法获取 autofs.service 的单元文件状态:没有这样的文件或目录”,则脚本应打印“未安装服务”,如果输出为“已启用”,则脚本应运行“systemctl --now disable autofs”。我尝试过使用 os 和 subprocess 模块,但无法成功。任何帮助,将不胜感激。
答案1
来自子流程Python 文档:
subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False) 使用参数运行命令并将其输出作为字节字符串返回。
如果返回码非零,则会引发 CalledProcessError。 CalledProcessError 对象将在 returncode 属性中包含返回代码,并在 output 属性中包含任何输出。
您可以检查初始命令的输出。基于此,您可以打印no service installed
或运行systemctl --now disable autofs
.
import subprocess
try:
subprocess.check_output(["systemctl", "is-enabled", "autofs"], stderr=subprocess.DEVNULL)
except subprocess.CalledProcessError as e:
print('no service installed')
else:
subprocess.run(["systemctl --now disable autofs"])