Add memory and disk space.
This commit is contained in:
parent
eaf5ccb0d3
commit
781b36cc2e
2 changed files with 55 additions and 2 deletions
51
load.py
51
load.py
|
@ -1,10 +1,23 @@
|
||||||
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
import psutil
|
||||||
|
import psutil._common as psc
|
||||||
from maubot import MessageEvent, Plugin
|
from maubot import MessageEvent, Plugin
|
||||||
from maubot.handlers import command
|
from maubot.handlers import command
|
||||||
from mautrix.types import Format, MessageType, TextMessageEventContent
|
from mautrix.types import Format, MessageType, TextMessageEventContent
|
||||||
|
|
||||||
|
|
||||||
|
def to_human(data):
|
||||||
|
output = {}
|
||||||
|
for name in data._fields:
|
||||||
|
value = getattr(data, name)
|
||||||
|
if name != "percent":
|
||||||
|
value = psc.bytes2human(value)
|
||||||
|
output[name] = value
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
class LoadBot(Plugin):
|
class LoadBot(Plugin):
|
||||||
@command.new("load", help="Get load average.")
|
@command.new("load", help="Get load average.")
|
||||||
@command.argument("message", pass_raw=True)
|
@command.argument("message", pass_raw=True)
|
||||||
|
@ -17,3 +30,41 @@ class LoadBot(Plugin):
|
||||||
formatted_body=f"{load}",
|
formatted_body=f"{load}",
|
||||||
)
|
)
|
||||||
await evt.respond(content)
|
await evt.respond(content)
|
||||||
|
|
||||||
|
@command.new("mem", help="Get system memory usage.")
|
||||||
|
@command.argument("message", pass_raw=True)
|
||||||
|
async def memory_handler(self, evt: MessageEvent, message: str) -> None:
|
||||||
|
rawmem = psutil.virtual_memory()
|
||||||
|
rawswap = psutil.swap_memory()
|
||||||
|
mem = {}
|
||||||
|
|
||||||
|
mem["virt"] = to_human(rawmem)
|
||||||
|
mem["swap"] = to_human(rawswap)
|
||||||
|
|
||||||
|
mem = json.dumps(mem, indent=2)
|
||||||
|
content = TextMessageEventContent(
|
||||||
|
msgtype=MessageType.NOTICE,
|
||||||
|
format=Format.HTML,
|
||||||
|
body=f"{mem}",
|
||||||
|
formatted_body=f"{mem}",
|
||||||
|
)
|
||||||
|
await evt.respond(content)
|
||||||
|
|
||||||
|
@command.new("disk", help="Get system disk usage.")
|
||||||
|
@command.argument("message", pass_raw=True)
|
||||||
|
async def disk_handler(self, evt: MessageEvent, message: str) -> None:
|
||||||
|
result = {}
|
||||||
|
parts = psutil.disk_partitions()
|
||||||
|
|
||||||
|
for part in parts:
|
||||||
|
usage = psutil.disk_usage(part.mountpoint)
|
||||||
|
result[str(part.mountpoint)] = to_human(usage)
|
||||||
|
|
||||||
|
result = json.dumps(result, indent=2)
|
||||||
|
content = TextMessageEventContent(
|
||||||
|
msgtype=MessageType.NOTICE,
|
||||||
|
format=Format.HTML,
|
||||||
|
body=f"{result}",
|
||||||
|
formatted_body=f"{result}",
|
||||||
|
)
|
||||||
|
await evt.respond(content)
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
maubot: 0.1.0
|
maubot: 0.1.0
|
||||||
id: uk.a09.maubot.load
|
id: uk.a09.maubot.load
|
||||||
version: 0.0.1
|
version: 0.0.2
|
||||||
license: MIT
|
license: AGPL-3.0-or-later
|
||||||
modules:
|
modules:
|
||||||
- load
|
- load
|
||||||
|
dependencies:
|
||||||
|
- psutil
|
||||||
main_class: LoadBot
|
main_class: LoadBot
|
||||||
|
|
Loading…
Reference in a new issue