在python脚本中定义linux命令并能够从脚本运行命令

在python脚本中定义linux命令并能够从脚本运行命令

我需要编写一个 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"])

相关内容