파이썬 shell=True 이 무엇을 하는지 잘 모르겠습니다
조회수 5668회
파이썬(Python 2.6.x 버전)을 이용해서 쉘 스크립트를 짜보고 있는데요.
subprocess 패키지를 사용했습니다. 검색을 해보니 shell=True를 사용하는 사람도 있고 사용을 안하는 사람도 있어서요. 차이를 모르겠습니다.
subprocess.call("date", shell=True)
subprocess.call("date")
의 결과 값이 같습니다. 무슨 역할을 하는지 모르겠네요..
1 답변
-
병령어에 인자를 넘겨줄 때 차이가 납니다.
shell = True
로 실행하시게 되면 일반적으로shell
에서 명령을 내리는 것 처럼 별도의 유효성 검사 없이 실행이 되기 때문에shell injection
에 취약하게 됩니다.아래처럼 명령어에 추가로
인자
를 주시면 차이점 확인이 가능합니다.shell = True
의 경우>>> call("ls /", shell = True) Applications System Volumes dev installer.failurerequests private usr Library TMVersion.ini bin etc net sbin var Network Users cores home opt tmp 0
shell = False
의 경우>>> call("ls /", shell = False) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 523, in call return Popen(*popenargs, **kwargs).wait() File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 711, in __init__ errread, errwrite) File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1343, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory
아래 문서에 더 자세한 설명이 있습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력