Comment diagnostiquer et réparer les agents Medulla des postes hors ligne (OFF) ?
S'applique à : Medulla / Agents Windows
Version : Medulla 5.6.x (reset à partir de 5.6.4)
Environnement : On-Premise / Serveur Debian
Catégorie : Administration / Diagnostic / Maintenance des agents
Script : diagnostic_machines_v5.py
Le script diagnostic_machines_v5.py permet d'identifier les causes pour lesquelles certains postes Windows apparaissent OFF (hors ligne) dans Medulla, alors qu'ils sont potentiellement allumés.
Il permet de :
- Identifier les postes déclarés OFF dans Medulla.
- Vérifier leur accessibilité réseau (ping et SSH).
- Contrôler l'état et la configuration de l'agent Medulla.
- Corriger automatiquement certaines anomalies connues.
- Redémarrer le service de l'agent lorsque cela est nécessaire.
- Demander une réinitialisation de l'agent sous certaines conditions.
- Générer des rapports CSV détaillés.
Information : Le mode audit permet d'analyser les postes sans modifier leur configuration. Les opérations de réparation nécessitent une confirmation explicite.
Quels sont les prérequis ?
Le script doit être exécuté sur le serveur Medulla avec les droits root.
- Medulla 5.6 ou supérieur.
- Accès root au serveur Medulla.
- Accès SSH par clé aux postes concernés, via le compte
pulseuser. - Droits administrateur sur les postes pour les opérations de réparation.
Le script nécessite Python 3.9 ou supérieur ainsi que les commandes mysql, ssh et ping. Si certaines commandes sont absentes, il peut proposer leur installation avec apt-get.
Comment télécharger le script de diagnostic ?
Le script diagnostic_machines_v5.py est disponible sur le serveur de téléchargement Medulla.
Depuis le serveur Medulla, exécutez la commande suivante avec les droits root :
wget https://dl.medulla-tech.io/ma/diagnostic_machines_v5.py
Important – Utiliser la dernière version du script :
Le script est régulièrement mis à jour afin d'intégrer de nouveaux contrôles et des corrections correspondant aux problèmes les plus fréquemment rencontrés sur les agents Medulla.
Il est donc fortement recommandé de récupérer systématiquement la dernière version avant chaque utilisation, afin de bénéficier des améliorations et des mécanismes de réparation les plus récents.
Pour actualiser une copie existante, utilisez :
wget -N https://dl.medulla-tech.io/ma/diagnostic_machines_v5.py
Une fois le téléchargement terminé, lancez le diagnostic :
python3 diagnostic_machines_v5.py
Comment lancer le diagnostic ?
Depuis le serveur Medulla, exécutez :
python3 diagnostic_machines_v5.py
| Choix | Mode | Périmètre |
|---|---|---|
| 1 | Audit uniquement | Tous les postes OFF |
| 2 | Audit uniquement | Une ou plusieurs IP |
| 3 | Audit et réparation | Tous les postes OFF |
| 4 | Audit et réparation | Une ou plusieurs IP |
| q | Quitter | Aucune action |
Recommandation : Commencez par le choix 1 – Audit uniquement, sélectionné par défaut, afin d'identifier les anomalies avant toute intervention.
Quelles sont les options disponibles ?
| Option | Description |
|---|---|
--dry-run |
Exécute uniquement l'audit, sans menu ni modification des postes. |
--ip IP[,IP] |
Limite le diagnostic aux adresses IP indiquées. |
--oui |
Confirme automatiquement les actions, notamment pour une exécution automatisée. |
--limite N |
Limite à N le nombre de corrections et de relances. |
--timeout-ssh S |
Définit le délai de connexion SSH (15 secondes par défaut). |
--attente S |
Définit l'attente avant de vérifier le retour ON dans Medulla (120 secondes par défaut). |
--installer |
Installe automatiquement les commandes manquantes. |
Exemple : auditer tous les postes OFF sans modification :
python3 diagnostic_machines_v5.py --dry-run
Exemple : auditer un poste spécifique :
python3 diagnostic_machines_v5.py --dry-run --ip 192.168.1.100
Exemple : lancer un diagnostic interactif sur plusieurs postes :
python3 diagnostic_machines_v5.py --ip 192.168.1.100,192.168.1.101
Quels contrôles sont effectués sur les agents ?
Pour chaque poste accessible en SSH, le script vérifie :
- L'état du service
medullaagent. - La présence des fichiers Python nécessaires à l'agent.
- La présence et l'état de
agentxmpp.py. - La présence et l'intégrité des fichiers de configuration.
- L'état du fichier
kiosk.pid. - La présence des bibliothèques dans le répertoire
lib. - La cohérence entre les versions de l'agent et du serveur.
- L'espace disque disponible sur
C:.
Les bibliothèques sont comparées à la référence disponible sur le serveur :
/var/lib/pulse2/xmpp_baseremoteagent/lib/
Information : Le ping et le SSH sont testés indépendamment. Un poste ne répondant pas au ping peut néanmoins être diagnostiqué et réparé s'il reste accessible en SSH.
Quelles anomalies peuvent être corrigées automatiquement ?
| Anomalie | Action |
|---|---|
| Appel de collecte Active Directory non protégé | Correction du code de l'agent. |
Fichier kiosk.pid corrompu |
Réparation du fichier. |
| Configuration absente ou endommagée | Restauration si une sauvegarde valide existe. |
Bibliothèques lib manquantes |
Restauration uniquement si la version de l'agent correspond à celle du serveur. |
| Service arrêté sans autre anomalie réparable | Redémarrage du service medullaagent. |
Les corrections s'appuient notamment sur le code intégré de reparer-agent-medulla.ps1.
Important : Si les versions des bibliothèques de l'agent et du serveur sont différentes ou incohérentes, le script ne copie pas les fichiers. Une réinstallation de l'agent est alors nécessaire.
Comment fonctionne la réparation automatique ?
En mode réparation, le script :
- Réalise un audit des postes concernés.
- Présente les corrections et relances prévues.
- Demande une confirmation explicite en saisissant OUI.
- Vérifie que chaque poste est toujours OFF et correspond au poste initialement audité.
- Applique les corrections possibles ou redémarre le service.
- Vérifie le résultat des interventions.
- Consulte à nouveau Medulla pour identifier les postes revenus ON.
Avant toute modification, les fichiers concernés sont sauvegardés. Leur intégrité est vérifiée après écriture et une restauration est prévue en cas d'échec.
Attention : L'option --oui supprime les demandes de confirmation. Elle doit être réservée aux opérations automatisées préalablement validées.
Comment réinitialiser un agent qui reste OFF ?
Si un poste reste OFF après les opérations de réparation ou de relance, le script peut proposer une demande de reset de l'agent.
Cette fonctionnalité nécessite :
- Medulla 5.6.4 ou supérieur.
- Un agent à jour, avec une version au moins égale à celle du serveur.
- Une seule fiche OFF correspondant au poste.
- Aucune demande de reset déjà en attente.
- Une seule adresse IP ciblée.
Le reset est demandé par une insertion dans la table :
xmppmaster.reset_machine
En mode interactif, une seconde confirmation OUI est nécessaire.
Information : Le script inscrit une demande de reset dans Medulla. Son traitement effectif est ensuite assuré par le serveur.
Quelles protections empêchent une intervention sur le mauvais poste ?
Le script intègre plusieurs mécanismes de sécurité :
- Un poste déjà ON dans Medulla est exclu des interventions.
- L'identité du poste est vérifiée avant chaque action.
- Un même poste possédant plusieurs IP n'est traité qu'une fois.
- Les modifications nécessitent les droits administrateur.
- Les fichiers remplacés sont sauvegardés.
- Les empreintes SHA256 sont contrôlées après modification.
- Une restauration est prévue en cas d'échec de correction.
- Un maximum de 10 actions est exécuté simultanément.
Limite de sécurité : Les clés d'hôte SSH ne sont pas vérifiées par le script. Son utilisation doit être limitée à un environnement réseau interne maîtrisé.
Où consulter les résultats du diagnostic ?
Chaque exécution crée un dossier horodaté dans :
/root/analyse/
Les principaux fichiers générés sont :
| Fichier | Contenu |
|---|---|
resultats.csv |
Diagnostic et résultat des actions pour chaque IP. |
statistiques.csv |
Synthèse des postes, anomalies et résultats. |
journaux/<ip>.log |
Journal détaillé des opérations réalisées sur le poste. |
Les fichiers CSV utilisent le séparateur ; et l'encodage UTF-8 avec BOM pour faciliter leur ouverture dans Excel.
Confidentialité : Les rapports contiennent des noms de postes et des adresses IP. Leur diffusion doit être limitée aux équipes autorisées.
Quels sont les principaux statuts retournés ?
| Statut | Signification |
|---|---|
CORRIGE |
Correction appliquée et service redémarré. |
RELANCE_OK |
Service redémarré correctement. |
DEMANDE |
Demande de reset enregistrée. |
EXCLU_DEJA_ON |
Poste déjà ON, aucune action. |
EXCLU_PASSE_ON |
Poste repassé ON avant l'intervention. |
DOUBLON_MEME_POSTE |
Poste déjà traité via une autre IP. |
ANNULE_POSTE_DIFFERENT |
Identité du poste différente de celle de l'audit. |
ECHEC_RESTAURE |
Échec de correction avec restauration. |
ECHEC_REDEMARRAGE / ECHEC_DEMARRAGE |
Échec du redémarrage du service. |
Quelles sont les limites connues ?
- Les réparations Windows via OpenSSH doivent être validées sur des postes réels avant un déploiement généralisé.
- Le traitement des demandes de reset doit être vérifié sur le serveur Medulla.
- Seuls certains fichiers de l'agent sont comparés à la référence serveur.
- Les agents présentant des versions mélangées nécessitent une réinstallation.
- Une IP inconnue de Medulla, ciblée avec
--ip, peut être considérée comme OFF et faire l'objet d'une relance. - Un changement d'état du poste entre le dernier contrôle et l'action reste possible.
Recommandation : Avant chaque utilisation, téléchargez la dernière version du script afin de bénéficier des corrections les plus récentes. Pour une première intervention, lancez un audit global avec --dry-run, analysez les résultats CSV, puis testez le mode réparation sur un seul poste avant d'intervenir sur plusieurs machines.