| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #!/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 "╚═══════════════════════════════════════════════╩══════════════╩══════════════╩══════════════╩══════════════╩══════════════╝"
|