791cea7db0
Añade scripts de gestión del servidor de bots: - ps.sh: vista detallada de procesos (PID, uptime, memoria, CPU, tamaño log) - restart.sh: reinicio de uno o todos los agentes (stop + start) - server.sh: comando unificado (start|stop|restart|status|ps|logs|kill|dashboard) - dashboard.sh: lanzador del TUI interactivo Estos scripts complementan los existentes (start.sh, stop.sh, list.sh) y permiten gestionar todo el servidor desde un solo punto de entrada. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
122 lines
3.4 KiB
Bash
Executable File
122 lines
3.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# server.sh — gestión unificada del servidor de bots
|
|
#
|
|
# Uso:
|
|
# ./dev-scripts/server.sh start [agent-id] # iniciar uno o todos
|
|
# ./dev-scripts/server.sh stop [agent-id] # detener uno o todos
|
|
# ./dev-scripts/server.sh restart [agent-id] # reiniciar uno o todos
|
|
# ./dev-scripts/server.sh status # resumen general del servidor
|
|
# ./dev-scripts/server.sh ps [agent-id] # procesos con detalle
|
|
# ./dev-scripts/server.sh logs [agent-id] # tail -f de logs
|
|
# ./dev-scripts/server.sh kill [agent-id] # SIGKILL forzado (emergencia)
|
|
# ./dev-scripts/server.sh dashboard # TUI interactivo
|
|
|
|
source "$(dirname "$0")/_common.sh"
|
|
|
|
CMD="${1:-status}"
|
|
shift || true
|
|
AGENT="${1:-}"
|
|
|
|
case "$CMD" in
|
|
start)
|
|
exec "$REPO_ROOT/dev-scripts/start.sh" ${AGENT:+"$AGENT"}
|
|
;;
|
|
|
|
stop)
|
|
exec "$REPO_ROOT/dev-scripts/stop.sh" ${AGENT:+"$AGENT"}
|
|
;;
|
|
|
|
restart)
|
|
exec "$REPO_ROOT/dev-scripts/restart.sh" ${AGENT:+"$AGENT"}
|
|
;;
|
|
|
|
ps)
|
|
exec "$REPO_ROOT/dev-scripts/ps.sh" ${AGENT:+"$AGENT"}
|
|
;;
|
|
|
|
logs)
|
|
exec "$REPO_ROOT/dev-scripts/logs.sh" ${AGENT:+"$AGENT"}
|
|
;;
|
|
|
|
dashboard|tui)
|
|
exec "$REPO_ROOT/dev-scripts/dashboard.sh"
|
|
;;
|
|
|
|
kill)
|
|
# SIGKILL forzado para emergencias
|
|
if [[ -n "$AGENT" ]]; then
|
|
agents=("$AGENT")
|
|
else
|
|
agents=()
|
|
while IFS='|' read -r id _v _e _d _c; do
|
|
agents+=("$id")
|
|
done < <(list_agents_raw)
|
|
fi
|
|
|
|
killed=0
|
|
for id in "${agents[@]}"; do
|
|
pid="$(read_pid "$id")"
|
|
if [[ "$pid" -gt 0 ]] && kill -0 "$pid" 2>/dev/null; then
|
|
kill -9 "$pid" 2>/dev/null || true
|
|
rm -f "$(pid_file "$id")"
|
|
ok "$id killed (PID $pid)"
|
|
((killed++)) || true
|
|
else
|
|
dim " $id (no estaba corriendo)"
|
|
fi
|
|
done
|
|
[[ "$killed" -eq 0 ]] && dim "Ningún proceso eliminado."
|
|
;;
|
|
|
|
status)
|
|
# Resumen general del servidor
|
|
total=0
|
|
running=0
|
|
stopped=0
|
|
disabled=0
|
|
|
|
while IFS='|' read -r id _version enabled _desc _cfg; do
|
|
((total++)) || true
|
|
st=$(agent_status "$id" "$enabled")
|
|
case "$st" in
|
|
running) ((running++)) || true ;;
|
|
stopped) ((stopped++)) || true ;;
|
|
disabled) ((disabled++)) || true ;;
|
|
esac
|
|
done < <(list_agents_raw)
|
|
|
|
echo ""
|
|
echo -e " ${BLU}Bot Server Status${RST}"
|
|
printf '%s\n' " $(printf '─%.0s' {1..40})"
|
|
echo -e " Agentes totales: $total"
|
|
echo -e " ${GRN}● Running:${RST} $running"
|
|
echo -e " ${DIM}○ Stopped:${RST} $stopped"
|
|
echo -e " ${YLW} Disabled:${RST} $disabled"
|
|
echo ""
|
|
|
|
# Mostrar tabla de agentes
|
|
"$REPO_ROOT/dev-scripts/list.sh"
|
|
|
|
# Si hay agentes corriendo, mostrar uso de recursos
|
|
if [[ "$running" -gt 0 ]]; then
|
|
echo ""
|
|
"$REPO_ROOT/dev-scripts/ps.sh"
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
echo "Uso: $0 {start|stop|restart|status|ps|logs|kill|dashboard} [agent-id]"
|
|
echo ""
|
|
echo "Comandos:"
|
|
echo " start [id] Iniciar uno o todos los agentes habilitados"
|
|
echo " stop [id] Detener uno o todos los agentes"
|
|
echo " restart [id] Reiniciar uno o todos los agentes"
|
|
echo " status Resumen general del servidor"
|
|
echo " ps [id] Procesos corriendo con detalle (PID, mem, CPU)"
|
|
echo " logs [id] Tail -f de logs"
|
|
echo " kill [id] SIGKILL forzado (solo emergencias)"
|
|
echo " dashboard TUI interactivo de gestión"
|
|
exit 1
|
|
;;
|
|
esac
|