반응형
오늘은 파이썬을 활용해서 리눅스의 기본적인 시스템 정보를 확인하고 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'라는 파이썬 스크립트 파일을 생성
- import os, subprocess, json : 필요한 파이썬 라이브러리들을 불러옵니다. os는 운영체제와 상호 작용하기 위한 라이브러리, subprocess는 쉘 명령을 실행하기 위한 라이브러리, json은 JSON 형식의 데이터를 다루기 위한 라이브러리입니다
- system_info = {} : 빈 딕셔너리를 생성합니다. 이 딕셔너리는 시스템 정보를 저장하는 용도로 사용됩니다.
- cpu_info = subprocess.check_output("lscpu", shell=True). decode():subprocess.check_output() 함수는 괄호 안의 쉘 명령을 실행하고 그 결과를 반환합니다. 여기서는 "lscpu" 명령을 실행하여 CPU 정보를 가져옵니다. decode() 함수는 반환된 바이트 문자열을 일반 문자열로 변환합니다.
- print('CPU Info:\n', cpu_info) : 쉘에 CPU 정보를 출력합니다.
- system_info ['CPU Info'] = cpu_info : CPU 정보를 딕셔너리에 저장합니다. 'CPU Info'는 딕셔너리의 키가 되며, cpu_info는 그 키에 대응하는 값이 됩니다.
- (메모리 정보, 디스크 사용량, 네트워크 상태)은 위와 동일한 방식으로 동작합니다. 각각 다른 쉘 명령을 사용하여 시스템 정보를 가져오고, 그 정보를 출력한 후 딕셔너리에 저장합니다.
- top_info = subprocess.check_output("top -b -n 1 | head -n 12", shell=True). decode(): top -b -n 1 명령은 시스템의 상태와 프로세스 정보를 가져옵니다. | head -n 12 부분은 이 중 상위 5개의 프로세스 정보만 가져오도록 합니다.
- with open('system_info.json', 'w') as f: json.dump(system_info, f) : 이 부분은 위에서 수집한 시스템 정보를 JSON 파일로 저장합니다. system_info.json이라는 이름의 파일을 쓰기 모드('w')로 열고, json.dump() 함수를 사용하여 'system_info' 딕셔너리를 이 파일에 쓰게 됩니다.
출력되는 정보는 코드 수정에 따라 달라질 수 있습니다.
이렇게 스크립트가 실행되면, 각각의 쉘 명령을 통해 시스템 정보를 수집하고, 그 정보를 쉘에 출력하며, 동시에 딕셔너리에 저장합니다. 마지막으로, 모든 정보가 수집된 후에는 이 딕셔너리를 JSON 파일로 저장합니다.
반응형
'파이썬' 카테고리의 다른 글
[파이썬] 지정한 시간동안 리눅스 시스템 모니터링 (2) | 2023.12.10 |
---|---|
python cv2 사용하기 (설치방법) (1) | 2022.02.07 |
파이썬 알고리즘 1부터 N까지의 합 (0) | 2022.02.03 |
백준 2438번 별 찍기 - 1 (0) | 2022.02.03 |
백준 1546번 평균 (파이썬) (0) | 2022.02.03 |