파이썬 cmd 명령어 실행 - paisseon cmd myeonglyeong-eo silhaeng

CMD명령어 결과 값 받는 방법

우리는 간혹 스크립트를 개발하다보면 리눅스에서 cmd결과 값을 가져오고 싶은 경우가 있다.
이럴때는 파이썬을 이용해서 쉽게 가져올 수 있다.

python에서 commands API를 쓰면 쉽게 가져올 수 있다.
import commands

아래의 예제를 통해 알아 보자.

예제1) 
commands.getoutput(cmd)
을 이용해 MAC주소를 가져오기

#!/usr/bin/python
import commands
output = commands.getoutput('ifconfig -a eth0 | grep HWaddr | awk \'{print $5}\'')
print output

실행을 하면 아래와 같이 명령 수행을 한 결과가 출력이 된다.

파이썬 cmd 명령어 실행 - paisseon cmd myeonglyeong-eo silhaeng

예제2)

실행성공 변수도 같이 저장되는

([실행 성공 여부 변수],[시스템 콜 결과 받는 변수]) = commands.getstatusoutput( CMD )

#!/usr/bin/python
import commands
output = commands.getstatusoutput('ls')
print ("output")
print (output)
print
print ("output[1]")
print (output[1])


실행을 하면 아래와 같이 명령 수행을 한 결과가 출력이 된다.

파이썬 cmd 명령어 실행 - paisseon cmd myeonglyeong-eo silhaeng

C/C++에서와 마찬가지로 python에서도 system명령어를 사용할 수 있다. 
system으로 명령어를 사용하는 경우에는 필요한 명령어가 실행만되면 되는 경우도 있지만,
실행한 결과를 문자열로 받고 싶거나, stdout으로 출력하고자 하는경우가 있을 것이다.

우선, 시스템 명령어를 실행하기위해는 2가지 정도의 방법이 존재한다고 알고있다. 
os모듈의 system함수를 사용하거나 subprocess모듈을 사용할수있다.

아래는 os모듈의 사용예제이다.

import os

os.system('ls')

위와 같이 예제를 작성하고 실행시킨다면 stdout으로 ls의 결과물을 볼수있을것이다. 하지만 만약 ls의 결과를 문자열로 저장하여 parsing을 해서 원하는 내용만 저장하고 싶다면?

아래와 같이 읽기모드형태의 파일객체를 return받아 read()를 통하여 문자열로 출력하거나, 문자열을 저장한다음 원하는 parsing을 할수도 있을것 같다. 하지만 아직 뭔가좀 불편하고 번거로운것 같다.

import os

f = os.popen("dir")
print(f.read())

그래서 자주 사용하는게 subprocess모듈의 check_out함수이다.
subprocess.check_out("cmd", shell=True, encoding='utf-8') 형태로 사용되는데,
사용하고자 하는 명령어가 첫번째 인자로 들어가고, 두번째인자로는 shell에서 실행될것인지의 여부, 세번째로는 명령어 실행의 결과가 바이너리 형태로 나오는데 txt파일로 저장하기 위한 encoding format을 적어주는것이다.

output = subprocess.check_out("cmd", shell=True, encoding='utf-8')

만약, encoding인자를 주지않고 subprocess.check_out("cmd", shell=True)로 사용한 후 string으로 받고싶다면 아래와 같이 decode함수를 사용하여 byte형태를 string형태로 바꿔주면 된다.

output = subprocess.check_out("cmd", shell=True).decode()

 subprocess 모듈은 이외에도 다양한 방법으로 사용이 되지만, system명령어의 출력결과를 얻을 때는 이렇게 사용된다.

파이썬 파일 저장방법에 대해서 알아 보겠습니다.

파이썬 설치가 되어 있지 않으시면 파이썬 설치 링크 를 참고 해 주세요.

파이썬 IDLE 로 저장하고 실행하는 방법이 궁금하신 분들은
PYTHON IDLE 실행 링크를 참고해 주세요. 

이번에는 명령프롬프트 ( CMD ) 에서 실행하는 방법에 대해서 알아 보겠습니다.

파이썬 cmd 명령어 실행 - paisseon cmd myeonglyeong-eo silhaeng

돋보기 버튼에서 cmd 를 입력하셔서 명령 프롬프트를 클릭하셔서 실행합니다.

파이썬 cmd 명령어 실행 - paisseon cmd myeonglyeong-eo silhaeng

윈도우버튼 + R 을 누르셔서 cmd 를 입력하셔도 명령 프롬프트를 실행하실 수 있습니다.

파이썬 cmd 명령어 실행 - paisseon cmd myeonglyeong-eo silhaeng

명령 프롬프트 화면에서 python 을 입력합니다. 

python 이 실행되지 않으시면 파이썬 환경변수 설정 방법 링크를 참고 하세요. 

print 명령어를 통해서 Hello Python 을 출력한 화면입니다.

이번에는 파이썬 파일을 저장 하고 실행 하는 방법에 대해서 알아 보겠습니다.

파이썬 cmd 명령어 실행 - paisseon cmd myeonglyeong-eo silhaeng

돋보기 버튼에서 notepad 을 검색하셔서 실행하시거나 

윈도우버튼 + R 에서 notepad 로 실행하시면 됩니다.

파이썬 cmd 명령어 실행 - paisseon cmd myeonglyeong-eo silhaeng

메모장에서 위와 같이 print 함수를 입력한 후에 저장 합니다.

파이썬 cmd 명령어 실행 - paisseon cmd myeonglyeong-eo silhaeng

왼쪽 위에 메뉴에 파일 을 클릭하시고 저장 을 클릭합니다.

단축키는 Ctrl + S 입니다.

파이썬 cmd 명령어 실행 - paisseon cmd myeonglyeong-eo silhaeng

저장하고 싶은 경로를 선택하시고  파일명을 정한 후에 뒤에 .py를 꼭 붙여 주셔야 합니다.
파일 형식은 모든 파일을 선택해주세요. 

저 같은 경우에는 아래와 같이 저장 하였습니다.

       파일 경로 : c:\python_test

파일 이름 : print2.py 

파일 형식 : 모든 파일 

파이썬 cmd 명령어 실행 - paisseon cmd myeonglyeong-eo silhaeng

정상적으로 저장이 되었다면 print2.py 라는 파일명이 왼쪽 위에 표시됩니다.

이제 다시 명령 프롬프트 창으로 돌아와 주세요. 

파이썬 cmd 명령어 실행 - paisseon cmd myeonglyeong-eo silhaeng

파이썬 파일을 저장한 경로로 이동한 후에 ( cd c:\python_test )

어떤 파일들이 있는지 확인하고 ( dir )

파이썬 파일을 실행하였습니다. ( py print2.py ) 

위와 같이 정상적으로 파이썬 파일이 실행되는 것을 확인할 수 있습니다.

고맙습니다.