check_printer.sh 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #!/bin/bash
  2. echo
  3. AUTH="Authorization: Bearer PRINTER123cerveza@"
  4. RED=$'\e[31m'
  5. GREEN=$'\e[32m'
  6. RESET=$'\e[0m'
  7. PRINTERS=(
  8. "Pedidos Express Printer (Barra)|6010|6011"
  9. "Pedidos Express Printer (Cocteleria)|6012|6013"
  10. "Pedidos Express Printer (Cocina Pizza)|6014|6015"
  11. "Pedidos Express Printer (Cocina Burger)|6016|6017"
  12. )
  13. # Encabezado optimizado
  14. echo "╔═══════════════════════════════════════════════╦══════════════╦══════════════╦══════════════╦══════════════╦══════════════╗"
  15. printf "║ %-45s ║ %-12s ║ %-12s ║ %-12s ║ %-12s ║ %-12s ║\n" \
  16. "Nombre" "Printer" "SSH (Port)" "Conectado" "Pendientes" "Status"
  17. echo "╠═══════════════════════════════════════════════╬══════════════╬══════════════╬══════════════╬══════════════╬══════════════╣"
  18. LAST_INDEX=$((${#PRINTERS[@]} - 1))
  19. for i in "${!PRINTERS[@]}"; do
  20. ENTRY="${PRINTERS[$i]}"
  21. NAME=$(echo "$ENTRY" | cut -d'|' -f1)
  22. PORT=$(echo "$ENTRY" | cut -d'|' -f2)
  23. SSH_PORT=$(echo "$ENTRY" | cut -d'|' -f3)
  24. RESPONSE=$(curl -fsS --max-time 2 "http://localhost:$PORT/status" -H "$AUTH" 2>/dev/null || true)
  25. # Check SSH port connectivity
  26. if nc -z -w2 localhost "$SSH_PORT" 2>/dev/null; then
  27. SSH_STATUS="OK"
  28. SSH_COLOR="${GREEN}"
  29. else
  30. SSH_STATUS="ERROR"
  31. SSH_COLOR="${RED}"
  32. fi
  33. if [[ -n "$RESPONSE" ]]; then
  34. PRINTER_STATUS="OK"
  35. PRINTER_COLOR="${GREEN}"
  36. if echo "$RESPONSE" | jq -e . >/dev/null 2>&1; then
  37. CONNECTED_RAW=$(echo "$RESPONSE" | jq -r '.printer_connected // "-"')
  38. if [[ "$CONNECTED_RAW" == "true" ]]; then
  39. CONNECTED="YES"
  40. CONNECTED_COLOR="${GREEN}"
  41. elif [[ "$CONNECTED_RAW" == "false" ]]; then
  42. CONNECTED="NO"
  43. CONNECTED_COLOR="${RED}"
  44. else
  45. CONNECTED="-"
  46. CONNECTED_COLOR=""
  47. fi
  48. PENDING=$(echo "$RESPONSE" | jq -r '.pending_orders // "-"')
  49. STATUS_RAW=$(echo "$RESPONSE" | jq -r '.status // "-"')
  50. # Procesar el status
  51. if [[ "$STATUS_RAW" == "ok" ]]; then
  52. STATUS="Operativo"
  53. STATUS_COLOR="${GREEN}"
  54. else
  55. STATUS="No Operativo"
  56. STATUS_COLOR="${RED}"
  57. fi
  58. RESPONSE_MSG="OK"
  59. RESPONSE_COLOR="${GREEN}"
  60. else
  61. CONNECTED="-"
  62. CONNECTED_COLOR=""
  63. PENDING="-"
  64. STATUS="No Operativo"
  65. STATUS_COLOR="${RED}"
  66. RESPONSE_MSG="${RESPONSE}"
  67. RESPONSE_COLOR="${GREEN}"
  68. fi
  69. else
  70. PRINTER_STATUS="ERROR"
  71. PRINTER_COLOR="${RED}"
  72. RESPONSE_MSG="-"
  73. CONNECTED="-"
  74. CONNECTED_COLOR=""
  75. PENDING="-"
  76. STATUS="No Operativo"
  77. STATUS_COLOR="${RED}"
  78. fi
  79. # Imprimir la fila con colores aplicados solo al texto, manteniendo el ancho fijo
  80. printf "║ %-45s ║ %b%-12s%b ║ %b%-12s%b ║ %b%-12s%b ║ %-12s ║ %b%-12s%b ║\n" \
  81. "$NAME" "$PRINTER_COLOR" "$PRINTER_STATUS:$PORT" "$RESET" "$SSH_COLOR" "$SSH_STATUS:$SSH_PORT" "$RESET" \
  82. "$CONNECTED_COLOR" "$CONNECTED" "$RESET" \
  83. "$PENDING" "$STATUS_COLOR" "$STATUS" "$RESET"
  84. # Solo imprimir barra si no es la última
  85. if [[ $i -lt $LAST_INDEX ]]; then
  86. echo "╠═══════════════════════════════════════════════╬══════════════╬══════════════╬══════════════╬══════════════╬══════════════╣"
  87. fi
  88. done
  89. echo "╚═══════════════════════════════════════════════╩══════════════╩══════════════╩══════════════╩══════════════╩══════════════╝"