#!/bin/bash echo AUTH="Authorization: Bearer PRINTER123cerveza@" RED=$'\e[31m' GREEN=$'\e[32m' RESET=$'\e[0m' PRINTERS=( "Pedidos Express Printer (Barra)|6010|6011" "Pedidos Express Printer (Cocteleria)|6012|6013" "Pedidos Express Printer (Cocina Pizza)|6014|6015" "Pedidos Express Printer (Cocina Burger)|6016|6017" ) # Encabezado optimizado echo "╔═══════════════════════════════════════════════╦══════════════╦══════════════╦══════════════╦══════════════╦══════════════╗" printf "║ %-45s ║ %-12s ║ %-12s ║ %-12s ║ %-12s ║ %-12s ║\n" \ "Nombre" "Printer" "SSH (Port)" "Conectado" "Pendientes" "Status" echo "╠═══════════════════════════════════════════════╬══════════════╬══════════════╬══════════════╬══════════════╬══════════════╣" LAST_INDEX=$((${#PRINTERS[@]} - 1)) for i in "${!PRINTERS[@]}"; do ENTRY="${PRINTERS[$i]}" NAME=$(echo "$ENTRY" | cut -d'|' -f1) PORT=$(echo "$ENTRY" | cut -d'|' -f2) SSH_PORT=$(echo "$ENTRY" | cut -d'|' -f3) RESPONSE=$(curl -fsS --max-time 2 "http://localhost:$PORT/status" -H "$AUTH" 2>/dev/null || true) # Check SSH port connectivity if nc -z -w2 localhost "$SSH_PORT" 2>/dev/null; then SSH_STATUS="OK" SSH_COLOR="${GREEN}" else SSH_STATUS="ERROR" SSH_COLOR="${RED}" fi if [[ -n "$RESPONSE" ]]; then PRINTER_STATUS="OK" PRINTER_COLOR="${GREEN}" if echo "$RESPONSE" | jq -e . >/dev/null 2>&1; then CONNECTED_RAW=$(echo "$RESPONSE" | jq -r '.printer_connected // "-"') if [[ "$CONNECTED_RAW" == "true" ]]; then CONNECTED="YES" CONNECTED_COLOR="${GREEN}" elif [[ "$CONNECTED_RAW" == "false" ]]; then CONNECTED="NO" CONNECTED_COLOR="${RED}" else CONNECTED="-" CONNECTED_COLOR="" fi PENDING=$(echo "$RESPONSE" | jq -r '.pending_orders // "-"') STATUS_RAW=$(echo "$RESPONSE" | jq -r '.status // "-"') # Procesar el status if [[ "$STATUS_RAW" == "ok" ]]; then STATUS="Operativo" STATUS_COLOR="${GREEN}" else STATUS="No Operativo" STATUS_COLOR="${RED}" fi RESPONSE_MSG="OK" RESPONSE_COLOR="${GREEN}" else CONNECTED="-" CONNECTED_COLOR="" PENDING="-" STATUS="No Operativo" STATUS_COLOR="${RED}" RESPONSE_MSG="${RESPONSE}" RESPONSE_COLOR="${GREEN}" fi else PRINTER_STATUS="ERROR" PRINTER_COLOR="${RED}" RESPONSE_MSG="-" CONNECTED="-" CONNECTED_COLOR="" PENDING="-" STATUS="No Operativo" STATUS_COLOR="${RED}" fi # Imprimir la fila con colores aplicados solo al texto, manteniendo el ancho fijo printf "║ %-45s ║ %b%-12s%b ║ %b%-12s%b ║ %b%-12s%b ║ %-12s ║ %b%-12s%b ║\n" \ "$NAME" "$PRINTER_COLOR" "$PRINTER_STATUS:$PORT" "$RESET" "$SSH_COLOR" "$SSH_STATUS:$SSH_PORT" "$RESET" \ "$CONNECTED_COLOR" "$CONNECTED" "$RESET" \ "$PENDING" "$STATUS_COLOR" "$STATUS" "$RESET" # Solo imprimir barra si no es la última if [[ $i -lt $LAST_INDEX ]]; then echo "╠═══════════════════════════════════════════════╬══════════════╬══════════════╬══════════════╬══════════════╬══════════════╣" fi done echo "╚═══════════════════════════════════════════════╩══════════════╩══════════════╩══════════════╩══════════════╩══════════════╝"