Side Project/Telegram Chatbot
[python]라즈베리파이 서버정보 파싱
땅콩킹땅콩
2020. 12. 2. 05:30
원격지에서 라즈베리파이의 서버 정보를 가져오기 위한 방법을 소개한다.
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)
필자는 텔레그램 봇과 연동하여 명령어 입력 시 서버 정보를 출력하도록 했다. 출력 결과는 다음과 같다.
반응형