Python 스크립트에서 Linux 명령을 정의하고 스크립트에서 명령을 실행할 수 있습니다.

Python 스크립트에서 Linux 명령을 정의하고 스크립트에서 명령을 실행할 수 있습니다.

Python 스크립트를 작성해야 합니다. 예를 들어 명령 출력이 "autofs.service에 대한 단위 파일 상태를 가져올 수 없습니다. 해당 파일 또는 디렉터리가 없습니다."인 경우 "systemctl is-enabled autofs" 명령을 실행해야 합니다. 스크립트는 "Not Install Service"를 인쇄해야 하며, 출력이 "Enabled"이면 스크립트는 "systemctl --now disable autofs"를 실행해야 합니다. os 및 subprocess 모듈을 사용해 보았지만 제대로 작동하지 못했습니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변1

~에서하위 프로세스Python 문서:

subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)는 인수를 사용하여 명령을 실행하고 해당 출력을 바이트 문자열로 반환합니다.

반환 코드가 0이 아니면 CalledProcessError가 발생합니다. CalledProcessError 개체에는 returncode 속성의 반환 코드와 출력 속성의 모든 출력이 포함됩니다.

초기 명령의 출력을 확인할 수 있습니다. 이를 바탕으로 인쇄 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"])

관련 정보