본문 바로가기
카테고리 없음

파이썬으로 시작하는 리눅스 시스템 관리

by 파크뉴스 2024. 2. 21.

서론

리눅스는 오픈 소스 운영 체제로, 안정성과 보안성으로 인해 주로 서버 환경에서 많이 사용됩니다. 파이썬은 강력한 스크립트 언어로, 리눅스 시스템을 효과적으로 관리하고 자동화하는 데 탁월한 도구로 사용됩니다. 이 블로그 포스팅에서는 파이썬을 활용하여 리눅스 시스템을 관리하는 기초적인 내용부터 심화 내용까지 다루어보겠습니다.

 

1. 리눅스 기본 명령어와 파이썬 연동

파이썬에서는 subprocess 모듈을 사용하여 리눅스 명령어를 실행할 수 있습니다. 예를 들어, 다음과 같이 간단한 명령어를 실행할 수 있습니다.

 

import subprocess

 

# ls 명령어 실행

result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE, text=True)

print(result.stdout)

이처럼 파이썬에서는 리눅스 명령어를 쉽게 실행하여 결과를 가져올 수 있습니다.

 

2. 로그 파일 분석 및 모니터링

실시간 로그 모니터링은 시스템 관리에서 중요한 부분입니다. tail 명령어를 이용하여 실시간으로 로그를 확인하는 스크립트를 작성할 수 있습니다.

 

import subprocess

 

# tail 명령어로 실시간 로그 모니터링

log_file = '/var/log/syslog'

process = subprocess.Popen(['tail', '-f', log_file], stdout=subprocess.PIPE, text=True)

 

while True:

line = process.stdout.readline()

if line:

# 로그를 분석하는 로직 추가

print(line.strip())

 

3. 시스템 자원 모니터링

파이썬의 psutil 라이브러리를 사용하면 CPU, 메모리, 디스크 사용량 등 다양한 시스템 자원 정보를 쉽게 얻을 수 있습니다.

 

import psutil

import time

 

while True:

# CPU, 메모리 사용량 확인

cpu_percent = psutil.cpu_percent(interval=1)

memory_info = psutil.virtual_memory()

 

print(f"CPU 사용량: {cpu_percent}%")

print(f"메모리 사용량: {memory_info.percent}%")

 

time.sleep(5)

 

4. 백업 스크립트 작성

시스템의 중요한 파일을 정기적으로 백업하는 스크립트를 작성할 수 있습니다.

 

import shutil

import datetime

 

source_dir = '/var/www/html'

backup_dir = f'/backup/html_backup_{datetime.datetime.now().strftime("%Y%m%d%H%M%S")}'

 

shutil.copytree(source_dir, backup_dir)

print(f"백업이 완료되었습니다. 백업 경로: {backup_dir}")

 

5. 사용자 관리 및 권한 설정

파이썬을 사용하여 리눅스 사용자를 추가하거나 권한을 설정하는 등의 작업도 가능합니다.

 

import subprocess

 

# 새로운 사용자 추가

new_user = 'new_user'

subprocess.run(['useradd', new_user])

 

# 디렉터리 권한 설정

directory_path = '/path/to/directory'

subprocess.run(['chmod', '755', directory_path])

 

6. 시스템 자동화 스크립트 작성

여러 작업을 자동화하는 스크립트를 작성할 수 있습니다. 예를 들어, 특정 조건이 충족되면 로그 파일을 압축하고 이메일로 전송하는 스크립트 등이 있습니다.

 

import subprocess

import shutil

import smtplib

from email.mime.text import MIMEText

 

# 로그 파일 압축

log_file = '/var/log/syslog'

subprocess.run(['tar', '-czf', 'syslog.tar.gz', log_file])

 

# 이메일 전송

sender_email = 'your_email@gmail.com'

receiver_email = 'recipient_email@gmail.com'

password = 'your_email_password'

 

msg = MIMEText('로그 파일 압축 및 전송 완료.')

msg['Subject'] = '로그 파일 압축 및 전송 알림'

msg['From'] = sender_email

msg['To'] = receiver_email

 

with smtplib.SMTP('smtp.gmail.com', 587) as server:

server.starttls()

server.login(sender_email, password)

server.sendmail(sender_email, receiver_email, msg.as_string())

 

결론

파이썬을 이용한 리눅스 시스템 관리는 효율적이고 간편하게 수행할 수 있습니다. 이를 통해 시스템 자원 모니터링, 로그 분석, 백업 등의 작업을 효과적으로 자동화할 수 있습니다. 파이썬의 다양한 라이브러리와 모듈을 활용하여 리눅스 시스템을 효과적으로 관리하는 스크립트를 작성해보세요.