2016-07-11 4 views
0

서비스가 설치된 경우 Python 스크립트로 확인하는 방법을 찾고 있습니다. 예를 들어, 내가 설치/실행/다운 명령 줄에서, 내가 사용에 SSH 서버보다 확인하려면 :서비스가 설치되어 있는지 확인하는 방법

sshd.service 
    Loaded: not-found (Reason: No such file or directory) 
    Active: inactive (dead) 
: 서비스가 설치되어 있지 않은 경우

service sshd status 

,이 같은 메시지가

그래서 3 행을 얻기 위해 check_output 서브 프로세스를 사용했지만 파이썬 스크립트가 작동하지 않습니다. 출력을 얻으려면 shell = True을 사용했지만 작동하지 않습니다. 서비스가 설치되어 있거나 다른 방법이 존재하고 훨씬 더 효율적인지 찾아내는 것이 올바른 해결책입니까?

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" 

이 코드를 가진 probleme가 subprocess.CalledProcessError입니다 :

내 파이썬 스크립트가 명령 그건 내가 알고있는 0이 아닌 종료 상태 1. 돌아 왔을 때하지 않는 명령 행 반환 뭔가 존재하지만 쉘에 명령을 쓸 때 결과가 필요합니다.

답변

0

그냥 오류를 잡아 shell=True을 피하기 :

import subprocess 

try: 
    output = subprocess.check_output(["service", "sshd", "status"], stderr=subprocess.STDOUT) 
except subprocess.CalledProcessError as e: 
    print(e.output) 
    print(e.returncode) 
+0

프로그램에서 다음과 같이 알려줍니다 : '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' 설치되었거나 설치되지 않았습니까 –

+0

'shd' 또는'sshd'입니까? –

+0

실수로, 내 코드 –

0

기존의 서비스와 존재하지 않는 서비스에 따라 다른 systemctl 호출을 선택하십시오. 서비스가 존재하고 1없는 경우 예를

를 들어
systemctl cat sshd 

종료 코드 0를 반환합니다. 그리고 확인하기가 쉽지 않을까요?

+0

나는 나의 스크립트를 적용 할 필요가 있지만 서비스가 중지 된 경우에도 일하고있다. 감사합니다!! –