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.