본문 바로가기
Languages/Python

Python으로 bash 명령 실행하기(os.system, subprocess)

by chuckolet 2019. 1. 14.

Introduction

파이썬을 이용해서 특정 시간마다 지속적으로 콘솔 프로그램을 실행 할 일이 있어서 알아보았습니다. 참고 글에 따르면 모의해킹 같은 분야에서 공격용으로 사용하나 보네요.

1. os.system

1
2
3
4
5
6
7
8
9
10
import os
import sys
import time
 
= 0
 
while(i < 5):
    os.system ('python3 main.py'# 원하는 콘솔 ㅕ
    i += 1
    time.sleep(60# 60초 마다 명령문 실행
cs


위와 같이 단순히 명령 실행을 위해 사용할 때 유용합니다.

실행 결과 성공 유무를 결과값으로 리턴해주기 때문에 결과값을 특정 변수에 저장하는 목적 등으로 사용하기에는 적합하지 않습니다.


위의 단점을 보완할 수 있는 다른 방법은 subprocess가 있습니다.

2. subprocess

os.system과 같이 단순히 “실행”만 시킬 때는 “call” 메서드를 이용하면 됩니다.


1
2
3
import subprocess
 
subprocess.call ('ls -al', shell=True)
cs

특정 명령 수행 결과를 바탕으로 if 조건문을 걸때에는 call이 아닌 check_ouput을 이용 합니다.


예를들어 특정 파일 실행결과가 “A” 혹은 “B”라고 가정하고 “A” 일 경우 “1”을 출력하고 “B”일 때 “2”을 출력하려면 

다음과 같이 코드를 작성하시면 됩니다.


1
2
3
4
5
6
7
import subprocess
 
result = subprocess.check_output ('./program' , shell=True)
if result == 'A' :
    print "1"
elif result == 'B' :
    print "2"
cs

References

http://noplanlife.com/?p=949


제 글이 도움이 되셨다면 간단하게 '공감', '댓글' 부탁드립니다!



댓글