소개
Linux 자동화에서 Bash 는 명령줄 도구를 연결하는 데 매우 유용합니다. 하지만 로직이 복잡해질수록 더 명확한 구조, 뛰어난 데이터 처리 기능, 풍부한 표준 라이브러리를 제공하는 Python 이 더 적합한 경우가 많습니다.
따라서 많은 운영 팀은 두 도구를 함께 사용합니다. 짧고 셸에 적합한 작업에는 Bash 를 사용하고, 유지 관리가 쉬운 자동화 스크립트에는 Python 을 사용합니다.
이 실습에서는 Linux 환경에서 Python 을 사용하는 첫 단계를 진행합니다. Python 버전 확인, 빠른 테스트를 위한 대화형 셸 사용, 기본 Linux 명령처럼 동작하는 Python 스크립트 작성 방법을 배웁니다.
Python 버전 확인
코드를 작성하기 전에 시스템에 설치된 Python 인터프리터의 버전을 확인해야 합니다. 현재 사용하는 Ubuntu 를 비롯한 대부분의 최신 Linux 배포판에는 Python 3 가 미리 설치되어 있습니다.
운영 작업에서 버전 확인은 호환성 확인이기도 합니다. Python 버전에 따라 언어 기능이나 라이브러리 동작이 추가되거나 변경될 수 있습니다. 모든 시스템의 인터프리터가 동일하다고 가정하면 한 컴퓨터에서 작동하는 스크립트가 다른 컴퓨터에서는 실패할 수 있습니다.
이 단계에서는 설치된 Python 3 의 버전을 확인합니다. 이를 통해 이후에 작성할 스크립트를 실행할 환경이 준비되었는지 확인합니다.
터미널을 열고 다음 명령을 실행하여 버전을 확인합니다.
python3 --version
다음과 비슷한 출력이 표시됩니다.
Python 3.10.12
정확한 버전 번호는 다를 수 있지만 Python 3.x 로 표시되면 정상입니다. 여기서는 python3를 명시적으로 사용합니다. 일부 오래된 시스템에서는 python(3 이 없는 명령) 이 더 이상 사용되지 않는 Python 2 를 가리키거나 아예 연결되어 있지 않을 수 있기 때문입니다.
REPL 사용
Python 은 대화형 셸을 제공하며, 이를 흔히 REPL(Read-Eval-Print Loop) 이라고 합니다. REPL 을 사용하면 파일을 만들지 않고도 코드 일부를 테스트하고, 라이브러리 사용 가능 여부를 확인하고, 간단한 계산을 빠르게 수행할 수 있습니다.
REPL 은 피드백을 빠르게 확인할 수 있다는 장점이 있습니다. 파일을 수정하고 저장한 뒤 반복해서 실행하는 대신 표현식을 하나씩 바로 테스트할 수 있습니다. 많은 엔지니어는 아이디어를 실제 스크립트로 작성하기 전에 셸 프롬프트에서 실험하는 것처럼 REPL 을 사용합니다.
이 단계에서는 Python 대화형 셸에 들어가 간단한 명령을 실행한 다음 Bash 셸로 돌아옵니다.
먼저 다음 명령을 입력하여 Python 3 대화형 셸을 시작합니다.
python3
명령 프롬프트가 >>>로 바뀝니다. 이는 이제 Python 환경 안에 있다는 뜻입니다.
이제 다음과 같은 간단한 Python 명령을 입력하여 메시지를 출력합니다.
print("Hello from Python REPL")
출력이 즉시 표시됩니다.
Python 셸을 종료하고 일반 Linux Bash 셸로 돌아오려면 다음을 입력합니다.
exit()
또는 Ctrl + D를 눌러도 됩니다.
종료한 후에는 다시 일반 명령 프롬프트 (예: labex:~/project $) 가 표시됩니다.
스크립트 작성
REPL 은 테스트에 적합하지만 실제 자동화에서는 코드를 스크립트로 저장해야 합니다. Python 스크립트는 Python 코드가 들어 있는 텍스트 파일입니다.
일회성 명령과 비교했을 때 스크립트의 실용적인 장점은 반복해서 사용할 수 있다는 것입니다. 로직을 파일에 저장하면 내용을 검토하고, Git 으로 버전을 관리하고, 다음 날 다시 실행하고, 다른 엔지니어에게 코드를 다시 입력하지 않고 전달할 수 있습니다.
이 단계에서는 system_info.py라는 파일을 만듭니다.
nano 텍스트 편집기를 사용하여 파일을 만들고 엽니다.
nano system_info.py
파일에 다음 내용을 추가합니다.
print("Starting system info script...")
nano에서 저장하고 종료하려면 다음과 같이 합니다.
nano 편집기에서 변경 내용을 저장하려면 Ctrl + O를 누른 다음 Enter를 눌러 파일 이름을 확인합니다. 마지막으로 Ctrl + X를 눌러 편집기를 종료하고 터미널로 돌아옵니다.
이제 파일이 생성되었는지 확인합니다.
ls -l system_info.py
표준 라이브러리 사용
Python 의 가장 큰 장점 중 하나는 "배터리 포함 (batteries-included)" 표준 라이브러리입니다. Bash 에서는 uname이나 cat /etc/os-release 같은 명령의 출력을 직접 파싱해야 하는 경우가 많지만, Python 은 시스템 정보에 깔끔하게 접근할 수 있는 내장 모듈을 제공합니다.
이 점은 Python 이 운영 도구에서 널리 사용되는 주요 이유입니다. 여러 개의 작은 텍스트 처리 명령을 이어 붙이는 대신 구조화된 함수와 객체를 직접 사용할 수 있습니다. 따라서 일반적으로 스크립트를 더 쉽게 읽을 수 있고, 출력 형식이 변경되어도 문제가 발생할 가능성이 줄어듭니다.
이 단계에서는 platform 라이브러리를 사용하여 운영 체제 정보를 출력하도록 스크립트를 수정합니다.
다시 nano로 스크립트를 엽니다.
nano system_info.py
내용을 다음과 같이 수정합니다.
import platform
print("Starting system info script...")
print(f"System: {platform.system()}")
print(f"Release: {platform.release()}")
print(f"Version: {platform.version()}")
nano에서 저장하고 종료합니다 (Ctrl+O, Enter, Ctrl+X).
Python 인터프리터에 스크립트 파일을 명시적으로 전달하여 테스트할 수 있습니다.
python3 system_info.py
Linux 환경에 대한 세부 정보가 출력됩니다.
스크립트 실행
앞 단계에서는 python3 system_info.py를 사용하여 스크립트를 실행했습니다.
인터프리터를 명시적으로 호출하는 방식은 초보자에게 가장 명확합니다. 셸이 파일을 어떻게 실행할지 추측할 필요가 없고, 어떤 인터프리터가 코드를 실행하는지 정확히 확인할 수 있기 때문입니다.
일반적인 Linux 환경에서는 ./system_info.py처럼 스크립트를 직접 실행하는 경우도 있습니다. 이 방식에는 다음 두 가지가 필요합니다.
- "shebang" 줄 (이번 실습에서는 생략했습니다).
- 파일에 설정된 "Execute" 권한.
이번 실습은 shebang 이 없는 간소화된 환경에서 진행하므로, 가장 안정적인 방법인 Python 인터프리터를 사용한 명시적 실행 방식을 계속 사용합니다.
스크립트가 여전히 정상적으로 작동하는지 확인하기 위해 한 번 더 실행합니다.
python3 system_info.py
이 명시적 명령은 Linux 에 수행할 작업을 정확히 지정합니다. 즉, python3 프로그램을 사용하여 system_info.py 파일의 명령을 읽고 실행합니다.
요약
이 실습에서는 Bash 와 Python 의 차이를 이해하고 두 환경을 연결하는 방법을 익혔습니다. 다음 작업을 수행했습니다.
- 환경 호환성을 확인하기 위해 Python 버전을 확인했습니다.
- 대화형 테스트에 REPL 을 사용했습니다.
- Python 스크립트를 작성했습니다.
- 표준
platform라이브러리를 사용하여 시스템 데이터에 접근했습니다. python3명령으로 스크립트를 실행했습니다.
이러한 기술은 Linux 에서 Python 스크립팅을 시작하는 기초가 됩니다. 이를 바탕으로 Bash 만 사용할 때보다 더 복잡하고 읽기 쉬운 자동화 도구를 작성할 수 있습니다.



