Files
BotVPS/tools.py

46 lines
1.6 KiB
Python

import subprocess
import os
import psutil
def run_bash_command(command: str) -> str:
"""Executa um comando bash na VPS e retorna a saída."""
try:
# Executa comando arriscado com root de forma segura dentro da VPS
result = subprocess.run(
command,
shell=True,
capture_output=True,
text=True,
timeout=60 # Limite de tempo de execução
)
output = result.stdout.strip()
error = result.stderr.strip()
if result.returncode != 0:
return f"ERRO ({result.returncode}):\n{error}"
return output if output else "Comando executado com sucesso (sem saída)."
except subprocess.TimeoutExpired:
return "ERRO: O comando demorou muito e foi cancelado (timeout)."
except Exception as e:
return f"ERRO fatal ao rodar bash: {str(e)}"
def get_system_health() -> str:
"""Retorna um texto base rápido da saúde atual do servidor para a IA analisar."""
cpu = psutil.cpu_percent(interval=0.1)
ram = psutil.virtual_memory().percent
disk = psutil.disk_usage('/').percent
return f"CPU: {cpu}% | RAM Usada: {ram}% | Disco Usado: {disk}%"
# Mapeamento estático para o LLM entender quais tools ele possui
AVAILABLE_TOOLS = {
"run_bash_command": {
"description": "Executa qualquer comando Linux no terminal da VPS. Use para criar arquivos, rodar git, verificar logs do docker, etc.",
"func": run_bash_command
},
"get_system_health": {
"description": "Verifica como está o uso de RAM, CPU e Disco agora.",
"func": get_system_health
}
}