adsb-1090/check_adsb_mistral_v0.sh

89 lines
3.9 KiB
Bash
Executable File

#!/bin/bash
# Couleurs pour l'affichage
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m'
print_status() {
echo -e "${1}${2}${NC}"
}
# 1. Vérifier que tous les conteneurs sont en cours d'exécution
print_status "$YELLOW" "=== Vérification des conteneurs Docker ==="
for service in readsb tar1090 adsb2pg webapp; do
if docker ps | grep -q "adsb-$service"; then
print_status "$GREEN" "✓ Le conteneur adsb-$service est en cours d'exécution."
else
print_status "$RED" "✗ Le conteneur adsb-$service n'est pas en cours d'exécution."
fi
done
# 2. Vérifier la détection du dongle RTL-SDR
print_status "$YELLOW" "\n=== Vérification du dongle RTL-SDR ==="
if docker logs adsb-readsb 2>&1 | grep -q "rtlsdr: using device #0: Generic RTL2832U OEM (AIRNAV, ADSB_1090, SN 00000010)"; then
print_status "$GREEN" "✓ Le dongle AirNav FlightStick (SN: 00000010) est détecté et utilisé par readsb."
else
print_status "$RED" "✗ Le dongle RTL-SDR n'est pas détecté ou utilisé correctement."
print_status "$YELLOW" "Dernières lignes des logs :"
docker logs adsb-readsb 2>&1 | tail -10
fi
# 3. Vérifier que readsb décode des messages ADS-B (via les ports)
print_status "$YELLOW" "\n=== Vérification du décodage ADS-B ==="
if timeout 2 nc -z 172.20.0.1 30005; then
print_status "$GREEN" "✓ Le port Beast (30005) émet des données (readsb décode des messages ADS-B)."
else
print_status "$RED" "✗ Aucune donnée détectée sur le port Beast (30005)."
fi
# 4. Vérifier les statistiques readsb (via l'IP du conteneur)
print_status "$YELLOW" "\n=== Vérification des statistiques readsb ==="
STATS=$(curl -s --max-time 5 http://172.20.0.2:30003/readsb/stats.json 2>/dev/null)
if [ -n "$STATS" ]; then
TOTAL_MSG=$(echo "$STATS" | jq -r '.totalMessages // "N/A"')
MSG_PER_SEC=$(echo "$STATS" | jq -r '.messagesPerSecond // "N/A"')
print_status "$GREEN" "✓ Statistiques readsb accessibles :"
print_status "$GREEN" " - Messages totaux : $TOTAL_MSG"
print_status "$GREEN" " - Messages/seconde : $MSG_PER_SEC"
else
print_status "$RED" "✗ Impossible de récupérer les statistiques de readsb."
print_status "$YELLOW" " → Essayez : docker exec adsb-readsb curl -s http://localhost:30003/readsb/stats.json | jq"
fi
# 5. Vérifier que tar1090 est accessible et reçoit des données
print_status "$YELLOW" "\n=== Vérification de tar1090 ==="
if curl -s --max-time 5 http://127.0.0.1:8090 >/dev/null; then
print_status "$GREEN" "✓ tar1090 est accessible sur http://127.0.0.1:8090."
AIRCRAFT_COUNT=$(curl -s --max-time 5 http://127.0.0.1:8090/data/aircraft.json | jq '. | length // 0')
if [ "$AIRCRAFT_COUNT" -gt 0 ]; then
print_status "$GREEN" "$AIRCRAFT_COUNT avion(s) détecté(s) sur tar1090."
LAST_UPDATE=$(curl -s --max-time 5 http://127.0.0.1:8090/data/aircraft.json | jq -r '.now // 0')
CURRENT_TIME=$(date +%s)
TIME_DIFF=$((CURRENT_TIME - LAST_UPDATE))
if [ "$TIME_DIFF" -le 10 ]; then
print_status "$GREEN" "✓ Les données sont récentes (dernière mise à jour il y a $TIME_DIFF secondes)."
else
print_status "$RED" "✗ Les données ne sont pas récentes (dernière mise à jour il y a $TIME_DIFF secondes)."
fi
else
print_status "$RED" "✗ Aucun avion détecté sur tar1090."
fi
else
print_status "$RED" "✗ tar1090 n'est pas accessible sur http://127.0.0.1:8090."
fi
# 6. Vérifier les ports critiques
print_status "$YELLOW" "\n=== Vérification des ports ==="
for port in 30002 30003 30005 8080 8090; do
if timeout 2 nc -z 127.0.0.1 $port; then
print_status "$GREEN" "✓ Le port $port est accessible sur 127.0.0.1."
else
print_status "$RED" "✗ Le port $port n'est pas accessible sur 127.0.0.1."
fi
done
print_status "$YELLOW" "\n=== Fin des vérifications ==="