【发布时间】:2016-11-13 19:24:49
【问题描述】:
我正在寻找一种方法来检查是否安装了服务的 Python 脚本。例如,如果我想在命令行中检查已安装/运行/关闭的 SSH 服务器,我使用:
service sshd status
如果服务没有安装,我有这样的消息:
sshd.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
所以,我使用了一个子进程 check_output 来获取这三行,但 python 脚本无法正常工作。我使用 shell=True 来获取输出,但它不起作用。查找是否安装了服务或其他方法是否存在并且效率更高的正确解决方案?
这是我的python脚本:
import subprocess
from shlex import split
output = subprocess.check_output(split("service sshd status"), shell=True)
if "Loaded: not-found" in output:
print "SSH server not installed"
此代码的问题是 subprocess.CalledProcessError: Command 返回非零退出状态 1。我知道那是命令行返回不存在但我在 shell 中编写命令时需要结果的时候
【问题讨论】:
-
这能回答你的问题吗? Check if service exists with Ansible
标签: python service subprocess sshd