[python]라즈베리파이 서버정보 파싱

원격지에서 라즈베리파이의 서버 정보를 가져오기 위한 방법을 소개한다.

python으로 작성하며, 원하는 곳으로 데이터를 전송할 수 있다.

 

[동작환경]
Raspberrypi 3B+
python 3.8

 

가져오는 정보는 라즈베리파이 CPU 정보, 메모리 사용량, CPU 온도, 업타임(Uptime)을 가져오도록 했다.

import platform
from collections import OrderedDict
from datetime import timedelta
import os

class Sysinfo:
    def __init__(self):
        self.model_name = None
        self.result = ''

    #CPU Info
    def getinfo(self):
        cpu_core = 0
        with open('/proc/cpuinfo') as f:
            for line in f:
                if line.strip():
                    if line.rstrip('\n').startswith('model name'):
                        self.model_name = line.rstrip('\n').split(':')[1]

        self.result += "CPU : " + self.model_name + "\n=====================\n"
        #Mem Info
        with open('/proc/meminfo') as f:
            meminfo = OrderedDict()
            for line in f:
                meminfo[line.split(':')[0]] = line.split(':')[1].strip()

        self.result += 'Total memory: ' + str(meminfo['MemTotal']) + "\n"
        self.result += 'Free memory: ' + str(meminfo['MemFree']) + "\n=====================\n"
        
        #Temp info
        temp = os.popen("vcgencmd measure_temp").readline()
        self.result += temp.replace("temp=","CPU TEMP: ") + "=====================\n"

        #uptime
        with open('/proc/uptime', 'r') as f:
            uptime_seconds = float(f.readline().split()[0])
            uptime_string = str(timedelta(seconds = uptime_seconds))

        self.result += 'Uptime: ' + uptime_string


        return self.result

if __name__ == '__main__':
    a = Sysinfo()
    b = a.getinfo()
    print(b)

 

필자는 텔레그램 봇과 연동하여 명령어 입력 시 서버 정보를 출력하도록 했다. 출력 결과는 다음과 같다.

 

반응형