목차
1. 표준 에러 처리 예제
subprocess를 사용하여 외부 프로세스 실행 시 표준 에러를 처리하는 방법을 보여주는 예제입니다.
import subprocess
command = "ls /invalid_directory" # 존재하지 않는 디렉토리를 ls 명령어로 실행
result = subprocess.run(command, shell=True, text=True, stderr=subprocess.PIPE)
if result.returncode == 0:
print(result.stdout)
else:
print(f"Error: {result.stderr}")
위처럼 존재하지 않는 파일에 접근했을 때 오류 메세지를 수신하여 후 처리가 가능하다.
2. 프로세스 상태 및 종료 코드 확인 예제
subprocess를 사용하여 외부 프로세스의 상태 및 종료 코드를 확인하는 방법을 보여주는 예제입니다.
import subprocess
command = "echo 'Hello, subprocess module!'"
result = subprocess.run(command, shell=True, text=True)
if result.returncode == 0:
print("프로세스 실행 성공!")
else:
print(f"프로세스 실행 실패. 종료 코드: {result.returncode}")
3. Popen 백그라운드 프로세스 실행 예제
subprocess의 Popen을 사용하여 백그라운드에서 프로세스를 실행하는 방법을 보여주는 예제입니다.
import subprocess
command = "python3 long_running_script.py"
result = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print("백그라운드 프로세스 실행 중")
4. 외부 명령어 실행의 보안 고려사항
subprocess를 사용하여 외부 명령어를 실행할 때 보안에 주의해야 할 사항들을 설명하는 예제입니다.
1. 사용자 입력 검증: 사용자로부터 입력받은 명령어를 검증하여 안전하지 않은 명령어가 실행되지 않도록 해야 합니다.
2. 실행 권한 제한: subprocess를 사용하여 실행할 수 있는 명령어를 제한하여 보안을 강화할 수 있습니다.
3. 쉘 인젝션 방지: 명령어를 실행할 때 쉘 인젝션 공격에 취약하지 않도록 인자를 올바르게 처리해야 합니다.
4. 환경 변수 관리: 외부 프로세스 실행 시 환경 변수를 제어하여 보안을 강화할 수 있습니다.
위의 예제 코드들은 파이썬에서 subprocess 모듈을 사용하여 쉘 명령을 실행하는 방법들을 보여줍니다.
이를 통해 다른 프로그램이나 명령어를 파이썬 스크립트 안에서 실행하고 그 결과를 가져올 수 있습니다.
반응형