Herramientas del servidor
Las 18 herramientas que tu asistente puede usar en un servidor, y las barreras de cada una.
Las herramientas de los ordenadores están en Tu ordenador.
Las herramientas marcadas con confirm devuelven primero una vista previa y solo actúan cuando se vuelven a llamar con confirm=true. Los asistentes tienen instrucciones de enseñarte la vista previa y preguntarte antes de confirmar.
Archivos
| Herramienta |
Qué hace |
list_dir(path, depth=1) |
Lista una carpeta (profundidad 1–4). Los archivos protegidos aparecen como [protected]. |
read_file(path, offset=0, max_lines=300) |
Lee un archivo de texto por partes. Los secretos aparecen como ***. |
search_files(pattern, path, glob="*", max_results=100) |
Búsqueda con expresión regular en los archivos de una carpeta. Se salta los archivos protegidos. |
write_file(path, content, confirm) |
confirm: escribe un archivo. Sin confirmación devuelve el diff. Hace copia antes. Rechaza contenido con *** (destruiría secretos reales). |
edit_file(path, old, new, confirm) |
confirm: reemplaza un fragmento único. Más seguro que reescribir el archivo entero. Hace copia antes. |
backup_create(path) |
Guarda una copia con fecha en /var/backups/opsgate. |
Logs y servicios
| Herramienta |
Qué hace |
tail_log(path, lines=100) |
Últimas líneas de un log dentro de las carpetas de logs (/var/log por defecto). Lee desde el final, incluso en archivos enormes. |
service_status(name) |
systemctl is-active más las últimas líneas de estado. |
service_restart(name, confirm) |
confirm: reinicia un servicio que permitiste con opsgate allow-restart. |
service_reload(name, confirm) |
confirm: envía HUP al proceso principal del servicio (recarga suave de nginx, gunicorn…). |
Comandos
| Herramienta |
Qué hace |
run_command(command, cwd, timeout=30, confirm) |
Ejecuta un comando permitido sin shell: |, ;, >, $( ) y los comodines no se interpretan. Las rutas deben estar dentro de las carpetas permitidas. Los comandos que cambian cosas (cp, mv, git pull…) necesitan confirm. Los intérpretes (python3 -c, bash…) y sudo nunca se permiten. |
start_session(command, cwd, confirm) |
Inicia un comando permitido en segundo plano (para compilaciones largas o journalctl -f). |
read_session(session_id, wait=2) |
Salida nueva desde la última lectura. |
stop_session(session_id) |
Detiene una sesión. |
list_sessions() |
Sesiones abiertas. Hasta 5 a la vez; las inactivas terminan a los 30 minutos. |
Comandos de lectura por defecto: ls cat head tail grep wc du df free uptime ps stat file diff date id whoami hostname uname which find tree journalctl netstat ss dpkg -l dpkg -L, pip list/show/freeze, npm list/view/outdated, node --version, python3 --version, systemctl status/is-active/list-units, git status/log/diff/rev-parse/show.
Bases de datos y telefonía
| Herramienta |
Qué hace |
db_query(sql, max_rows=100) |
Un SELECT/SHOW/DESCRIBE/EXPLAIN sobre la base MySQL/MariaDB configurada con opsgate db, con un usuario de solo SELECT. |
asterisk_cli(command, confirm) |
Comandos de la CLI de Asterisk, en servidores con Asterisk: los de solo lectura se ejecutan directamente; las recargas (perfil asterisk) necesitan confirm. |
run_shell(command, cwd, timeout=60, background) |
Solo con el perfil de acceso full. Ejecuta un comando de bash como root, como una sesión SSH (pipes, scripts, mysql, asterisk -rx…). background=true lo inicia en segundo plano; léelo con read_session. Queda en el registro de auditoría. |
Cuenta
| Herramienta |
Qué hace |
account_status() |
Tu plan y las llamadas de este mes. No cuenta como llamada. |
Límites en cada llamada
- La salida se limita a 20.000 caracteres (si es más larga se corta con una nota).
- 120 llamadas por minuto por app conectada, por defecto.
- Cada llamada se escribe en
/var/log/opsgate/audit.jsonl con sus parámetros (secretos ocultos), duración y resultado.