7.0 KiB
✅ Déploiement de la fonctionnalité de suivi - RÉUSSI
Date: 23 décembre 2025 Version: IPWatch 1.0.1 Fonctionnalité: Suivi d'équipements avec Wake-on-LAN
📋 Résumé de l'implémentation
La fonctionnalité de suivi d'équipements a été déployée avec succès dans IPWatch.
✅ Modifications backend (FastAPI)
- Modèle
IPmodifié : ajout du champtracked(boolean) avec index - Schémas Pydantic mis à jour :
IPUpdateetIPResponseincluenttracked - Nouveau router
/api/tracking/créé avec 3 endpoints :GET /api/tracking/- Liste des IPs suiviesPOST /api/tracking/wol/{ip}- Wake-on-LANPOST /api/tracking/shutdown/{ip}- Éteindre (à configurer)
- Migration de base de données exécutée avec succès
- Dépendance
wakeonlan==3.1.0ajoutée et installée
✅ Modifications frontend (Vue 3 + Router)
- Vue Router installé (
vue-router@4.2.5) - Configuration du routing créée (
/et/tracking) - Page
MainView.vuecréée (page principale) - Page
TrackingView.vuecréée (page de suivi) - Composant
IPDetails.vuemodifié : checkbox "IP suivie" ajoutée - Composant
AppHeader.vuemodifié : bouton "Suivi" ajouté (jaune/orange) App.vuetransformé en router-viewmain.jsmis à jour avec le router
🎯 Utilisation
1. Marquer une IP comme suivie
- Cliquez sur une cellule IP dans la grille principale
- Dans le panneau de gauche, cochez "IP suivie"
- Cliquez sur "Enregistrer"
2. Accéder à la page de suivi
- Cliquez sur le bouton "⭐ Suivi" dans le header (jaune/orange)
- Vous êtes redirigé vers la page
/tracking
3. Actions disponibles sur la page de suivi
Pour chaque équipement suivi :
-
Bouton WOL (vert) : Envoie un paquet Magic Packet Wake-on-LAN
- Nécessite une adresse MAC enregistrée
- Désactivé si l'équipement est déjà en ligne
-
Bouton Éteindre (rose) : Envoie une commande d'arrêt
- ⚠️ Non implémenté (retourne HTTP 501)
- Nécessite configuration selon votre infrastructure
-
Bouton Détails (violet) : Retourne à la page principale avec l'IP sélectionnée
-
Bouton Rafraîchir : Actualise la liste des équipements suivis
🛠️ Configuration Wake-on-LAN
Prérequis matériels
Pour que WOL fonctionne, l'équipement cible doit :
- Avoir Wake-on-LAN activé dans le BIOS/UEFI
- Avoir le support WOL activé sur la carte réseau
- Être branché à l'alimentation (ATX)
Test Wake-on-LAN
# Depuis le conteneur Docker
docker exec ipwatch python -c "
from wakeonlan import send_magic_packet
send_magic_packet('AA:BB:CC:DD:EE:FF')
print('Paquet WOL envoyé !')
"
🔍 Vérification du déploiement
1. Vérifier la migration de base de données
docker exec ipwatch sqlite3 ./data/db.sqlite "PRAGMA table_info(ip);" | grep tracked
Sortie attendue :
14|tracked|BOOLEAN|0|0|0
1b. Migration VM (nouveau champ)
docker exec ipwatch python -m backend.app.migrations.add_vm_field
docker exec ipwatch sqlite3 ./data/db.sqlite "PRAGMA table_info(ip);" | grep vm
Sortie attendue :
15|vm|BOOLEAN|0|0|0
2. Vérifier les endpoints API
# Liste des IPs suivies
curl http://localhost:8080/api/tracking/
# Health check
curl http://localhost:8080/health
3. Vérifier le frontend
Ouvrez votre navigateur sur http://localhost:8080 :
✅ Le bouton "⭐ Suivi" est visible dans le header
✅ Cliquer dessus charge la page /tracking
✅ La checkbox "IP suivie" est présente dans le panneau de gauche
📊 Statut du déploiement
=== Démarrage IPWatch ===
✓ Configuration chargée: 10.0.0.0/22
✓ Base de données initialisée: ./data/db.sqlite
✓ Scheduler démarré
=== IPWatch prêt ===
Migration de base de données:
✓ Colonne 'tracked' ajoutée
✓ Index 'idx_ip_tracked' créé
Serveur:
✓ Uvicorn running on http://0.0.0.0:8080
📂 Fichiers modifiés/créés
Backend
backend/app/models/ip.py [MODIFIÉ]
backend/app/routers/ips.py [MODIFIÉ]
backend/app/routers/tracking.py [CRÉÉ]
backend/app/migrations/add_tracked_field.py [CRÉÉ]
backend/app/migrations/__init__.py [CRÉÉ]
backend/app/main.py [MODIFIÉ]
backend/requirements.txt [MODIFIÉ]
Frontend
frontend/src/router/index.js [CRÉÉ]
frontend/src/views/MainView.vue [CRÉÉ]
frontend/src/views/TrackingView.vue [CRÉÉ]
frontend/src/components/AppHeader.vue [MODIFIÉ]
frontend/src/components/IPDetails.vue [MODIFIÉ]
frontend/src/App.vue [MODIFIÉ]
frontend/src/main.js [MODIFIÉ]
frontend/package.json [MODIFIÉ]
Documentation
SUIVI_EQUIPEMENTS.md [CRÉÉ]
DEPLOIEMENT_REUSSI.md [CE FICHIER]
🚀 Prochaines étapes
Configuration optionnelle : Shutdown
Pour activer la fonctionnalité d'arrêt, éditez backend/app/routers/tracking.py :
Option 1 : SSH (Linux)
pip install paramiko
import paramiko
def shutdown_via_ssh(ip_address, username, password):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip_address, username=username, password=password)
ssh.exec_command("sudo shutdown -h now")
ssh.close()
Option 2 : WMI (Windows)
pip install wmi-client-wrapper
import wmi
def shutdown_via_wmi(ip_address, username, password):
c = wmi.WMI(computer=ip_address, user=username, password=password)
os = c.Win32_OperatingSystem(Primary=1)[0]
os.Shutdown()
⚠️ Sécurité : Stockez les credentials dans des variables d'environnement, jamais en clair.
📞 Support
Logs du conteneur
docker logs ipwatch -f
Logs de la base de données
docker exec ipwatch sqlite3 ./data/db.sqlite "SELECT * FROM ip WHERE tracked = 1;"
Redémarrage
docker compose restart ipwatch
Rebuild complet
docker compose build --no-cache
docker compose up -d
✅ Checklist de validation
- Migration de base de données exécutée
- Colonne
trackedprésente dans la tableip - Index
idx_ip_trackedcréé - Conteneur démarré sans erreurs
- Endpoints API
/api/tracking/accessibles - Frontend construit et déployé
- Bouton "Suivi" visible dans le header
- Checkbox "IP suivie" présente dans IPDetails
- Navigation vers
/trackingfonctionnelle - Page de suivi affiche correctement les équipements
- Boutons WOL, Éteindre, Détails présents
- Dépendance
wakeonlaninstallée
🎉 DÉPLOIEMENT RÉUSSI !
Votre fonctionnalité de suivi d'équipements est maintenant opérationnelle. Consultez SUIVI_EQUIPEMENTS.md pour plus d'informations.