원격지에서 라즈베리파이의 서버 정보를 가져오기 위한 방법을 소개한다.
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)
필자는 텔레그램 봇과 연동하여 명령어 입력 시 서버 정보를 출력하도록 했다. 출력 결과는 다음과 같다.
반응형
'Side Project > Telegram Chatbot' 카테고리의 다른 글
텔레그램 봇과 MySQL 연동하기 (0) | 2020.12.03 |
---|---|
[Telegram Bot] lol api 이용한 게임 알림 챗봇 제작기 (0) | 2020.11.26 |
[BeautifulSoup4] Python 게시판 크롤러 텔레그램 봇 제작기(2) (0) | 2020.02.22 |
[BeautifulSoup4] Python 게시판 크롤러 텔레그램 봇 제작기(1) (0) | 2019.08.05 |