zhenxun_bot/plugins/check/data_source.py

73 lines
2.4 KiB
Python
Raw Normal View History

2021-05-20 19:21:05 +08:00
import psutil
import aiohttp
import time
from datetime import datetime
2021-06-30 19:50:55 +08:00
from utils.user_agent import get_user_agent
2021-05-20 19:21:05 +08:00
from asyncio.exceptions import TimeoutError
from aiohttp.client_exceptions import ClientConnectorError
2021-06-30 19:50:55 +08:00
from utils.utils import get_local_proxy
2021-05-20 19:21:05 +08:00
import asyncio
from services.log import logger
class Check:
def __init__(self):
self.cpu = None
self.memory = None
self.disk = None
self.user = None
self.baidu = 200
self.google = 200
async def check_all(self):
await self.check_network()
await asyncio.sleep(0.1)
self.check_system()
self.check_user()
def check_system(self):
self.cpu = psutil.cpu_percent()
self.memory = psutil.virtual_memory().percent
self.disk = psutil.disk_usage("/").percent
async def check_network(self):
async with aiohttp.ClientSession(headers=get_user_agent()) as session:
try:
2021-07-30 21:21:51 +08:00
async with session.get(
"https://www.baidu.com/", proxy=get_local_proxy(), timeout=3
) as response:
2021-05-20 19:21:05 +08:00
pass
except (TimeoutError, ClientConnectorError) as e:
2021-07-30 21:21:51 +08:00
logger.warning(f"访问BaiDu失败... e: {e}")
2021-05-20 19:21:05 +08:00
self.baidu = 404
try:
2021-07-30 21:21:51 +08:00
async with session.get(
"https://www.google.com/", proxy=get_local_proxy(), timeout=3
) as response:
2021-05-20 19:21:05 +08:00
pass
except (TimeoutError, ClientConnectorError) as e:
2021-07-30 21:21:51 +08:00
logger.warning(f"访问Google失败... e: {e}")
2021-05-20 19:21:05 +08:00
self.google = 404
def check_user(self):
2021-07-30 21:21:51 +08:00
rst = ""
2021-05-20 19:21:05 +08:00
for user in psutil.users():
rst += f'[{user.name}] {time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(user.started))}\n'
self.user = rst[:-1]
async def show(self):
await self.check_all()
2021-07-30 21:21:51 +08:00
rst = (
f'[Time] {str(datetime.now()).split(".")[0]}\n'
f"-----System-----\n"
f"[CPU] {self.cpu}%\n"
f"[Memory] {self.memory}%\n"
f"[Disk] {self.disk}%\n"
f"-----Network-----\n"
f"[BaiDu] {self.baidu}\n"
f"[Google] {self.google}\n"
)
2021-05-20 19:21:05 +08:00
if self.user:
2021-07-30 21:21:51 +08:00
rst += "-----User-----\n" + self.user
2021-05-20 19:21:05 +08:00
return rst