파이썬

파이썬 활용하여 리눅스 기본 시스템 정보 확인

lowcodingpython 2023. 12. 10. 11:40
반응형

오늘은 파이썬을 활용해서 리눅스의 기본적인 시스템 정보를 확인하고 json 파일로 저장까지 

하도록 간단하게 코드를 만들어서 실행해 보겠습니다. 

 

System Info

OS : RockyLinux 9.x

Host PC : Mac M1 - VM

 

오늘 사용할 코드입니다. 

import os
import subprocess
import json

# 시스템 정보를 담을 딕셔너리 생성
system_info = {}

# CPU 정보 수집
cpu_info = subprocess.check_output("lscpu", shell=True).decode()
print('CPU Info:\n', cpu_info)
system_info['CPU Info'] = cpu_info

# 메모리 정보 수집
mem_info = subprocess.check_output("free -m", shell=True).decode()
print('Memory Info:\n', mem_info)
system_info['Memory Info'] = mem_info

# 디스크 사용량 수집
df_info = subprocess.check_output("df -h", shell=True).decode()
print('Disk Usage:\n', df_info)
system_info['Disk Usage'] = df_info

# 네트워크 상태 - ESTABLISHED 상태만 표기
netstat_info = subprocess.check_output("netstat -an | grep ESTABLISHED", shell=True).decode()
print('Network Status:\n', netstat_info)
system_info['Network Status'] = netstat_info

# 시스템 로드와 프로세스 정보 - 상위 5개 프로세스만 출력
top_info = subprocess.check_output("top -b -n 1 | head -n 12", shell=True).decode()
print('System Load & Process Info:\n', top_info)
system_info['System Load & Process Info'] = top_info

# 시스템 정보를 json 파일로 저장
with open('system_info.json', 'w') as f:
    json.dump(system_info, f)

리눅스 nano 텍스트 에디터를 사용하여 'system_info.py'라는 파이썬 스크립트 파일을 생성

 

시스템-정보-파이썬-스크립트-문서셍성

  1.  import os, subprocess, json : 필요한 파이썬 라이브러리들을 불러옵니다. os는 운영체제와 상호 작용하기 위한 라이브러리, subprocess는 쉘 명령을 실행하기 위한 라이브러리, json은 JSON 형식의 데이터를 다루기 위한 라이브러리입니다
  2.  system_info = {} : 빈 딕셔너리를 생성합니다. 이 딕셔너리는 시스템 정보를 저장하는 용도로 사용됩니다.
  3.  cpu_info = subprocess.check_output("lscpu", shell=True). decode():subprocess.check_output() 함수는 괄호 안의 쉘 명령을 실행하고 그 결과를 반환합니다. 여기서는 "lscpu" 명령을 실행하여 CPU 정보를 가져옵니다. decode() 함수는 반환된 바이트 문자열을 일반 문자열로 변환합니다.
  4.  print('CPU Info:\n', cpu_info) : 쉘에 CPU 정보를 출력합니다.
  5.  system_info ['CPU Info'] = cpu_info : CPU 정보를 딕셔너리에 저장합니다. 'CPU Info'는 딕셔너리의 키가 되며, cpu_info는 그 키에 대응하는 값이 됩니다.
  6.  (메모리 정보, 디스크 사용량, 네트워크 상태)은 위와 동일한 방식으로 동작합니다. 각각 다른 쉘 명령을 사용하여 시스템 정보를 가져오고, 그 정보를 출력한 후 딕셔너리에 저장합니다.
  7.  top_info = subprocess.check_output("top -b -n 1 | head -n 12", shell=True). decode(): top -b -n 1 명령은 시스템의 상태와 프로세스 정보를 가져옵니다. | head -n 12 부분은 이 중 상위 5개의 프로세스 정보만 가져오도록 합니다.
  8.  with open('system_info.json', 'w') as f: json.dump(system_info, f) : 이 부분은 위에서 수집한 시스템 정보를 JSON 파일로 저장합니다. system_info.json이라는 이름의 파일을 쓰기 모드('w')로 열고, json.dump() 함수를 사용하여 'system_info' 딕셔너리를 이 파일에 쓰게 됩니다.

출력되는 정보는 코드 수정에 따라 달라질 수 있습니다. 

시스템-확인-파이썬

이렇게 스크립트가 실행되면, 각각의 쉘 명령을 통해 시스템 정보를 수집하고, 그 정보를 쉘에 출력하며, 동시에 딕셔너리에 저장합니다. 마지막으로, 모든 정보가 수집된 후에는 이 딕셔너리를 JSON 파일로 저장합니다.

반응형