Skip to main content

Diagnostiquer et corriger les agents Medulla

S'applique à : Medulla – Serveur et agents Windows
Version : medulla_agents_V25.medulla_agents_V29.py
Environnement : On-Premise / DebianServeur Medulla
Catégorie : Diagnostic et/ correctionRéparation / Maintenance des agents Medulla

Le script medulla_agents_V25.medulla_agents_V29.py permet de diagnostiquer les agents Medulla,Medulla installés sur les postes Windows, d'identifier les problèmesanomalies de communication, de configuration ou d'inventairefonctionnement et de proposer des corrections lorsqueaprès celles-ci sont possibles.confirmation.

Il fonctionne suranalyse les machines indiquées ON ouet OFF, danscontrôle Medulla.les Selonservices, leurles état,fichiers ilde utilisel'agent, les communications XMPP ouet SSH.SSH, l'inventaire GLPI-Agent, les journaux et certains problèmes de configuration du serveur.

Chaque relevé produit un rapport HTML comprenant une fiche par machine, un diagnostic et un plan de réparation avec les commandes à exécuter.

Important : Un L'audit n'effectueest aucuneeffectué modificationen delecture configuration.seule Lessur actionsles correctivespostes sontet encadréesdans la base Medulla. Depuis la V27, le rapport est toutefois publié par desdéfaut contrôlessous deforme sécuritéchiffrée etsur nécessitentle unesite confirmationweb explicite.du serveur. Utilisez --sans-publication pour désactiver cette publication.

1. Usage rapide

Cette première partie permetexplique decomment téléchargerlancer le script, d'effectuer un diagnostic, d'analyserconsulter lesle résultatsrapport et de lancercorriger une première correction.machine.

1.1. Télécharger le scriptPrérequis

Connectez-vous en SSH au serveur Medulla, puis exécutez :

wget https://dl.medulla-tech.io/ma/medulla_agents_V25.py
chmod +x medulla_agents_V25.py

Le script ests'exécute disponibledirectement àsur l'adressele serveur Medulla, avec les droits root.

Les commandes suivantes doivent être disponibles :

    mysql : Téléchargerinterrogation medulla_agents_V25.py.de la base Medulla. ssh : connexion aux machines. scp : transfert des fichiers. ping : diagnostic de connectivité. ip : diagnostic réseau. openssl : publication chiffrée des rapports.

    Si des paquets sont absents, le script propose de les installer. L'option --installer permet leur installation sans question.

    1.2. Lancer unle premierscript diagnosticdans screen

    Pour diagnostiqueréviter qu'une coupure de connexion SSH interrompe le diagnostic, il est recommandé d'exécuter le script dans une session screen.

    screen -S medulla
    cd /root
    ./medulla_agents_V29.py

    Pour détacher la session sans arrêter le script :

    Ctrl+A puis D

    Pour retrouver la session :

    screen -r medulla

    Attention : Sans screen, une coupure SSH peut interrompre le relevé. Les actions XMPP déjà lancées peuvent cependant se terminer.

    1.3. Premier diagnostic sans correction

    Pour auditer les machines apparaissant OFF dans Medulla :

    sudo ./medulla_agents_V25.medulla_agents_V29.py --dry-run

    Pour auditer l'ensemble desdu machines,parc, machines ON et OFF :

    sudo ./medulla_agents_V25.medulla_agents_V29.py --perimetre tout --dry-run

    ConseilPour : Commencez par l'option --dry-run pour effectuer une analyse sans correction.

    1.3. Diagnostiquerdiagnostiquer une machine précise

    Pour contrôler une machine à partir de son nom :

    sudo ./medulla_agents_V25.medulla_agents_V29.py --cible PC1068 --dry-run

    Pour utiliserdiagnostiquer sonplusieurs adresse IPmachines :

    sudo ./medulla_agents_V25.medulla_agents_V29.py --cible 192.168.1.25PC1068,10.0.0.12 --dry-run

    PlusieursConseil machines: peuventPour êtreun indiquéespremier relevé, utilisez --perimetre tout --dry-run. Vous obtiendrez une vision globale des anomalies sans modifier les postes.

    1.4. Consulter le rapport HTML

    Depuis la V27, le script publie automatiquement une version chiffrée du rapport sur le site web du serveur Medulla.

    En fin d'exécution, le bloc ACCÈS AU RAPPORT indique :

      L'adresse du rapport. Un identifiant temporaire. Un mot de passe temporaire.

      L'adresse suit généralement cette structure :

      sudohttps://<serveur-medulla>/medulla-rapports/rapport.html

      Ouvrez cette adresse dans un navigateur et renseignez les identifiants affichés par le script.

      Les identifiants sont renouvelés à chaque publication. Seuls ceux du dernier relevé publié restent valides.

      Attention : Utilisez obligatoirement HTTPS pour consulter la version publiée. Le navigateur refuse le déchiffrement lorsque la page est ouverte en HTTP.

      1.5. Comprendre le rapport

      La page d'ensemble permet de :

        Visualiser le nombre de machines par état. Consulter les anomalies du serveur. Identifier les problèmes par famille. Rechercher une machine par nom, adresse IP ou texte du problème. Filtrer par famille, accès ou état Medulla. Trier les machines par colonne. Exporter en CSV la sélection affichée.

        Un clic sur une machine ouvre sa fiche détaillée.

        1.6. Comprendre les états des machines
        État Signification Injoignable La machine ne répond ni en SSH ni en XMPP. Agent à réinstaller L'agent est absent ou l'accès SSH nécessaire est refusé. Une intervention manuelle est requise. Action manuelle Au moins un problème ne peut pas être corrigé automatiquement. Fonctionne, défaut non traité La machine fonctionne, mais présente un défaut non corrigé par défaut. Réparable par le script Le script dispose d'une action corrective applicable. Corrigé en partie Certaines corrections ont réussi, mais des anomalies subsistent. Corrigé Les corrections de ce relevé ont abouti. Sans défaut Aucune anomalie détectée.
        1.7. Consulter la fiche d'une machine

        La fiche individuelle contient quatre parties :

          Résumé : état de connexion, services, version de l'agent, inventaire, configuration et actions réalisées. Plan de réparation : problèmes prioritaires, commandes à copier et actions manuelles. Détail des anomalies : explication, traitement possible et commandes adaptées au poste. Contrôles complémentaires : valeurs techniques relevées pendant l'audit.

          Le bouton Copier la fiche permet de récupérer le diagnostic et le plan de réparation pour les intégrer dans un ticket de support.

          Pour afficher une fiche directement en console, sans lancer un nouvel audit :

          ./medulla_agents_V25.medulla_agents_V29.py --fiche PC1068

          Pour plusieurs machines :

          ./medulla_agents_V29.py --fiche NB554,NB648
          1.8. Corriger une machine

          Après consultation du rapport, vous pouvez lancer les corrections proposées sur une machine :

          ./medulla_agents_V29.py --cible PC1068,PC1069,192.168.PC1068 --oui

          L'option --oui sélectionne le mode audit et actions, puis confirme les actions sans poser de question.

          Pour conserver les confirmations interactives :

          ./medulla_agents_V29.py --cible PC1068

          Pour traiter également une machine ON qui fonctionne mais présente un défaut :

          ./medulla_agents_V29.py --cible PC1068 --oui --full

          Attention : L'option --full autorise les corrections sur des machines qui fonctionnent déjà. Ne l'utilisez qu'après avoir examiné les anomalies signalées.

          1.259. Vérifier la correction

          Après intervention, le script relance automatiquement un audit du poste.

          Si l'agent est temporairement occupé, une nouvelle tentative est effectuée après 30 secondes, avec un délai doublé.

          Si la vérification est reportée, relancez ultérieurement :

          ./medulla_agents_V29.py --cible PC1068 --dry-run

          Une vérification reportée ne signifie pas nécessairement que la correction a échoué.

          1.4.10. ConsulterCommandes les résultatsplus utiles
          Commande Fonction --dry-run Audit seul, sans correction. --perimetre tout --dry-run Audit de toutes les machines. --cible PC1068 Audit d'une machine avec choix interactif du mode. --cible PC1068 --oui Audit et corrections sans confirmation interactive. --full Inclut les machines fonctionnelles présentant un défaut. --fiche PC1068 Affiche la dernière fiche sans nouvel audit. --sans-inventaire --dry-run Recherche les machines ON sans UUID d'inventaire. --sans-publication Désactive la publication web. --publier-dernier Republie le dernier rapport avec de nouveaux identifiants. -v Active les traces détaillées.
          2. Usage complet

          ÀCette partie décrit le fonctionnement technique, les contrôles, les actions de réparation et les outils complémentaires.

          2.1. Fonctionnement SSH et XMPP

          Le script choisit automatiquement le transport pour chaque machine.

          Situation Transport Fonctionnement Machine OFF SSH Connexion avec le compte pulseuser et une clé SSH. Machine ON XMPP Utilisation d'un compte ejabberd temporaire et du plugin shellcommand. Machine ON sans réponse XMPP SSH Repli automatique pour poursuivre le diagnostic. Fiche OFF correspondant à un poste ON XMPP La fiche ON est privilégiée. Planificateur de tâches refusant l'exécution XMPP SSH Nouvelle tentative par SSH.

          Le compte XMPP temporaire utilise un mot de passe aléatoire qui n'est jamais affiché. Le compte est supprimé à la fin du diagnostic,traitement.

          2.2. Déroulement d'un relevé
            Lecture des options, choix de la langue et contrôle des prérequis. Lecture des machines dans xmppmaster.machines. Choix du transport SSH ou XMPP. Audit des postes en lecture seule. Analyse des machines injoignables et contrôles serveur. Présentation des anomalies et du plan de réparation. Confirmation des actions lorsque le mode correction est activé. Corrections, relances et vérifications. Proposition éventuelle de reset ou de reconfiguration. Retour dans Medulla et mesure de l'état après correction. Génération des fichiers CSV, fiches et rapport HTML. Publication chiffrée du rapport, sauf désactivation.

            Les étapes de correction sont ignorées en mode audit seul.

            2.3. Protection des machines fonctionnelles

            Une machine ON dont l'agent répond correctement en XMPP est considérée comme fonctionnelle.

            Par défaut, ses anomalies sont signalées, mais aucune correction n'est appliquée.

            En mode interactif, le script créepeut demander :

            Traiter aussi ces N machine(s) qui fonctionnent ? [o/N]

            L'option --full permet d'autoriser leur traitement sans cette question.

            2.4. Contrôles sur les postes
            Famille Contrôles effectués Accès Ping, session ejabberd, connexion SSH ou XMPP, droits administrateur. Système Version de Windows et compatibilité avec l'agent. Medulla Cohérence entre les fiches OFF et ON. Agent Python, service medullaagent, version, medullanetnotify, sshdaemon et mise à jour automatique. Fichiers Fichiers de l'agent, agentrescue, bibliothèques, scripts et dossier de journaux. Configuration agentconf.ini, agentconf.ini.local, kiosk.pid, collecte AD et espace disque. Flux Connexion XMPP, ports TCP et résolution DNS. Inventaire GLPI-Agent, version, exécutable, inventaire récent et deviceid. Journaux Erreurs, boucles de reconfiguration, relais, mise à jour et redémarrages. Sécurité Copies PAExec éventuellement bloquées par un répertoireEDR.
            2.5. Contrôle des droits du compte pulseuser

            Depuis la V29, le script vérifie si le compte pulseuser possède les droits administrateur locaux nécessaires.

            Si ce compte n'est plus administrateur, les corrections et relances par SSH sont bloquées.

            La fiche de typeréparation releve_DATEplace contenantce problème en priorité.

            Sur le poste Windows, avec un compte disposant des droits nécessaires, la commande PowerShell suivante permet d'ajouter pulseuser au groupe Administrateurs :

            Add-LocalGroupMember -SID S-1-5-32-544 -Member pulseuser

            Si le compte est retiré automatiquement, vérifiez les résultats.stratégies de groupe, notamment :

              Groupes restreints. Utilisateurs et groupes locaux. Les configurations ou politiques associées à LAPS. Les paramètres UAC.

              Après correction des droits, relancez :

              ./medulla_agents_V29.py --cible PC1068 --oui
              2.6. Contrôle de GLPI-Agent

              Le script examine :

                La présence de GLPI-Agent. Sa version, avec un seuil de compatibilité à 1.8. La présence de perl\bin\glpi-agent.exe. La réponse de la commande --version. L'âge du dernier inventaire. La cohérence du deviceid avec le nom du poste.

                Depuis la V29, la comparaison du deviceid ne tient compte que du nom court du poste, sans le domaine, afin d'éviter certains faux diagnostics de poste cloné.

                Depuis la V28 : GLPI-Agent absent ou antérieur à 1.8 n'empêche plus les corrections de l'agent Medulla, la reconfiguration ou le reset d'office. Seule la demande d'inventaire est ignorée jusqu'à la mise à jour de GLPI-Agent.

                Le script ne met pas GLPI-Agent à jour lui-même.

                2.7. Contrôle des services

                Le script vérifie notamment :

                  medullaagent : service principal. medullanetnotify : service de notification. sshdaemon : service SSH de l'agent.

                  Selon les anomalies, il peut proposer le démarrage ou la relance d'un service.

                  Pour une machine joignable en XMPP dont le port SSH est fermé, le script peut démarrer sshdaemon par XMPP puis tester de nouveau le port 22.

                  2.8. Contrôle des fichiers de l'agent

                  Le script compare les fichiers de l'agent avec les fichiers de référence du serveur.

                  Il recherche notamment :

                    Les fichiers manquants ou différents. Les bibliothèques incomplètes. Les erreurs ImportError. Les scripts introuvables. Les anomalies dans agentrescue\lib. L'absence du dossier Medulla\var\log.

                    En mode correction, les fichiers nécessaires peuvent être copiés depuis le serveur après sauvegarde.

                    Le script ne rétrograde jamais un agent plus récent que celui du serveur.

                    2.9. Mise à jour automatique de l'agent

                    Le diagnostic vérifie les éléments de la mise à jour automatique :

                      Empreintes agent et img_agent. Paramètre BOOL_DISABLE_IMG. État [updateagent] updating. Présence du descripteur de mise à jour. Configuration loadautoupdate.ini sur le serveur.

                      Une mise à jour bloquée avec un descripteur absent peut justifier un reset d'office.

                      Attention : Si le relais du serveur présente l'erreur « Too many open files », il faut d'abord traiter ce problème. Le redémarrage du relais peut être effectué manuellement avec :

                      systemctl restart pulse-xmpp-agent-relay

                      Cette commande est une intervention administrateur distincte : le script ne redémarre pas automatiquement le relais du serveur.

                      2.10. Diagnostic réseau et DNS

                      Le script contrôle les communications entre les postes, le serveur et les relais.

                      Il recherche notamment :

                        Les problèmes de connexion au port XMPP 5222. Les ports TCP inaccessibles. Les échecs de résolution DNS récents. Les problèmes de routage. Les adresses IP potentiellement obsolètes.

                        Les échecs DNS sont recherchés sur les sept derniers jours, afin de limiter les alertes liées à d'anciens changements de réseau.

                        2.11. Enquête sur les postes injoignables

                        Pour une machine ne répondant ni en SSH ni en XMPP, le script recherche les causes possibles à partir des informations du serveur.

                        Il examine notamment :

                          La dernière présence dans uptime_machine. La dernière activité ejabberd. Les messages de la table logs sur 30 jours. Les journaux ejabberd et des substituts Medulla. Le port SSH 22. La route réseau et les informations ARP. La résolution DNS du poste.

                          Par défaut, l'enquête traite au maximum 300 postes.

                          Constat Cause possible Connection refused sur le port 22 Poste allumé, mais service SSH arrêté ou absent. DNS donnant une autre IP Adresse IP obsolète dans Medulla. Aucune réponse ARP sur le même sous-réseau Poste éteint ou adresse IP modifiée. No route to host Poste éteint, IP changée ou filtrage réseau. ARP répond mais pas SSH Pare-feu du poste ou service indisponible. Aucune réponse Poste éteint ou filtrage silencieux. Aucune route vers le réseau Problème de routage du serveur. Port 22 de nouveau ouvert Incident probablement temporaire.

                          Le résultat est enregistré dans enquete_postes_injoignables.csv et dans la fiche de chaque machine concernée.

                          2.12. Contrôles sur le serveur Medulla

                          Le script réalise également des contrôles serveur en lecture seule :

                            Erreurs « Too many open files » sur les relais. Descripteurs de fichiers ouverts et limites du relais. Fichiers de déploiement manquants encore suivis. Erreurs d'authentification SCRAM-PLUS ejabberd. Plugins absents ou non chargés. UUID d'inventaire en double. deviceid GLPI-Agent en double. Adresses MAC partagées ou blacklistées. Entrées orphelines de la table network. Machines ON sans inventaire. Reconfigurations et resets en attente. Reconnexions en boucle. Enregistrements incomplets. Disponibilité des substituts Medulla. URL d'envoi des inventaires et paramètres de génération.
                            2.13. Actions correctives disponibles
                            Action Fonctionnement Transport Correction Arrêt contrôlé, sauvegarde, correction, redémarrage et vérification. SSH ou XMPP Alignement agentxmpp.py Copie depuis le serveur si la version du poste n'est pas plus récente. SSH ou XMPP Relance du service Arrêt et redémarrage contrôlés. SSH ou XMPP Démarrage SSH Démarrage de sshdaemon et nouveau test du port 22. XMPP Demande d'inventaire Déclenchement de l'inventaire et contrôle du rattachement. XMPP Reset ciblé Inscription d'une demande dans reset_machine. Base Medulla Reset d'office Demande de réinitialisation des fichiers de l'agent pour les machines concernées. Base Medulla Reconfiguration Inscription de need_reconf = 1. Base Medulla

                            Les opérations de reset et de reconfiguration disposent de confirmations distinctes.

                            2.14. Reset ciblé et reset d'office

                            Le reset ciblé est une opération de dernier recours sur une machine désignée qui reste OFF après une intervention SSH.

                            Le reset d'office peut être proposé pour plusieurs machines présentant certains défauts :

                              Reconnexions en boucle. Machine ON sans inventaire. Mise à jour bloquée par l'absence de descripteur. Modules ou scripts de l'agent manquants. Redémarrages de l'agent en boucle.

                              Le serveur retélécharge les fichiers de l'agent lorsque celui-ci est connecté, ou lors de son prochain retour.

                              Attention : Un reset d'office peut concerner plusieurs machines. Examinez la liste proposée avant confirmation.

                              2.15. Reconfiguration

                              La reconfiguration utilise le champ need_reconf = 1 dans la base Medulla.

                              Pour proposer la reconfiguration d'une machine :

                              ./medulla_agents_V29.py --cible PC1068 --reconfigurer

                              Elle peut être proposée lorsqu'un motif est détecté, ou demandée explicitement avec l'option --reconfigurer.

                              Une machine OFF ne peut pas exécuter immédiatement la demande. Celle-ci attend son retour en ligne.

                              2.16. Règles de sécurité
                                L'audit n'effectue aucune modification sur les postes ou dans la base Medulla. Les actions nécessitent une confirmation, ou l'option --oui. Les machines fonctionnelles sont protégées par défaut. Une machine ON n'est traitée en SSH qu'en situation de repli. L'identité du poste est revérifiée avant chaque action. Le service est arrêté avant les modifications qui le nécessitent. Les fichiers modifiés sont sauvegardés. Aucun fichier n'est supprimé. L'agent n'est jamais rétrogradé. Les corrections ne sont jamais rejouées automatiquement. Le script ne réinstalle pas l'agent et ne met pas GLPI-Agent à jour. agentconf.ini n'est jamais exporté ni affiché. Les mots de passe sont masqués. Le compte XMPP temporaire est supprimé à la fin. Les actions administrateur sur le serveur sont recommandées mais non exécutées automatiquement.

                                Si une connexion SSH disparaît juste avant une correction, le script réessaie après cinq secondes. Si elle reste indisponible, l'action est annulée avec le diagnostic ANNULE_SSH_PERDU.

                                2.17. Publication chiffrée du rapport

                                Le rapport web est publié par défaut dans :

                                /var/www/html/medulla-rapports/rapport.html

                                La racine réelle est déterminée à partir de la configuration du site Apache, sauf personnalisation.

                                Le contenu est compressé, puis chiffré avec AES-256 et protégé par HMAC. La clé est dérivée de l'identifiant et du mot de passe.

                                Le script ne modifie pas la configuration Apache.

                                La nouvelle publication remplace la précédente.

                                Pour désactiver cette publication :

                                ./medulla_agents_V29.py --perimetre tout --dry-run --sans-publication

                                Pour republier le dernier relevé avec de nouveaux identifiants :

                                ./medulla_agents_V29.py --publier-dernier

                                Les rapports CSV, les fiches JSON et la version non chiffrée restent dans le dossier local du relevé.

                                Confidentialité : Le rapport contient des informations techniques sur le parc. Conservez les identifiants d'accès dans un canal approprié et évitez de diffuser la version HTML non chiffrée.

                                2.18. Fichiers produits

                                Par défaut, les relevés sont enregistrés dans un sous-dossier daté de :

                                /root/analyse/releve_<date>/
                                Fichier DescriptionContenu
                                rapport.html
                                Rapport HTML autonome non chiffré, avec fiches et filtres. fiches.json Fiches individuelles utilisées par --fiche. resultats.csv DiagnosticRésultats détailléd'audit, deactions chaqueet machine.diagnostics. statistiques.csv Synthèse statistiqueCompteurs du relevé.relevé et bilan avant/après. plan_de_remediation.csv Problèmes détectés et actions recommandées. avant_apres_reparation.csv Évolution de l'état des machines. enquete_postes_injoignables.csv Diagnostic des postes injoignables. reconnexions_en_boucle.csv Machines présentant des reconnexions répétées. uuid_inventaire_en_double.csv UUID d'inventaire partagés entre plusieurs fiches. mac_partagees.csv Adresses MAC partagées. mac_blacklistees_a_reconfigurer.csv Machines concernées par une MAC blacklistée. reconfiguration_mac.csv Résultats des reconfigurations liées aux MAC. reset_d_office.csv Résultats des resets d'office. fiches_off_obsoletes.csv Fiches OFF potentiellementcorrespondant obsolètes.à des machines ON. glpi_agent_sans_full.csv Machines avec GLPI-Agent antérieur à 1.8. journaux/<poste>.log Journal détaillédes deactions chaqued'une poste.machine. trace.log Traces supplémentairesdétaillées avec l'option --verbose.v.

                                Les fichiers CSV utilisentsont générés avec le séparateur point-virgule et l'encodage UTF-8 avec BOM.

                                ,

                                Pourdans commencer,la consultezlangue le fichier plan_de_remediation.csv, puis resultats.csv.sélectionnée.

                                1.5.2.19. ComprendreOptions les premières anomaliesavancées
                                ConstatOption SignificationFonction PremièreValeur vérificationpar défaut
                                OK--perimetre off|on|tout AucuneChoix anomaliedu détectée par les contrôles réalisés.périmètre. Aucune intervention nécessaire.off
                                PARTIEL--limite N DiagnosticNombre oumaximal correctionde incomplet.postes corrigés et de services relancés. ConsulterSans les journaux.limite
                                Machine OFF--ssh-seul AgentDésactive déconnectéle danstransport Medulla.XMPP. Vérifier SSH, réseau et services.Non
                                Service arrêté--xmpp-seul UnDésactive serviceSSH nécessaireet ne fonctionne pas.ping. Examiner la correction proposée.Non
                                Inventaire absent--relancer-tout InventaireRelance nonaussi disponible.les services déjà démarrés, avec --full. Vérifier l'agent et la chaîne d'inventaire.Non
                                Relais--attente-inventaire injoignableS ProblèmeAttente demaximale communicationdu avecrattachement le relais.d'inventaire. Vérifier300 les flux et le relais affecté.s
                                Fichiers--attente manquantsS ComposantsAttente avant le contrôle de Medulla après correction.
                                120 s --serveur-pulse ADRESSE Adresse serveur testée depuis les postes. Adresse utilisée pour joindre le poste --timeout-ssh S Délai de connexion SSH. 15 s --timeout-audit S Durée maximale d'audit d'un poste. 45 s --timeout-copie S Durée maximale de copie. 0, sans limite --inactivite-copie S Abandon d'une copie inactive. 120 s --essais N Nouvelles tentatives de connexion et d'audit. 1 -l fr|en|es|de Langue de l'agentinterface absentset des CSV. Menu ou incomplets.langue système --installer Comparer avecInstalle les fichierspaquets demanquants référence.sans confirmation. Non -v, --verbose Active les traces détaillées. Non
                                1.6.

                                Le Lancerdossier des relevés est par défaut /root/analyse. Le nombre d'audits simultanés est par défaut de 50, avec une premièreplage correctionde 1 à 256.

                                L'option --publier reste acceptée pour compatibilité, mais n'a plus d'effet puisque la publication est activée par défaut.

                                2.20. Outil complémentaire : extraction des journaux

                                AprèsLe avoirscript analysémedulla_extract_logs.py permet de collecter et d'analyser les résultats,journaux lancezdes unepostes interventionet cibléedu serveur.

                                Il s'exécute sur le serveur Medulla avec les droits root et effectue uniquement des lectures sur les postes.

                                Pour analyser les machines en anomalie du dernier relevé :

                                sudo ./medulla_agents_V25.medulla_extract_logs.py --depuis-releve /root/analyse

                                Pour analyser des machines précises :

                                ./medulla_extract_logs.py --cible PC1068NB554,NB648

                                Pour collecter uniquement les erreurs des machines ON :

                                ./medulla_extract_logs.py --ouiperimetre on --erreurs-seules

                                Pour collecter les journaux serveur uniquement :

                                ./medulla_extract_logs.py --sans-postes

                                L'outil masque les secrets et regroupe les erreurs par signature.

                                Il produit une archive de synthèse :

                                A_ENVOYER_<date>.tar.gz

                                Cette archive est destinée à être transmise au support sans les journaux bruts.

                                2.21. Outil complémentaire : délai de reconfiguration

                                Le script medulla_reconf_delai.py analyse la configuration du substitut master_reconf et les demandes en attente.

                                Il calcule :

                                  Le délai normal de reconfiguration. Le délai maximal. Une valeur conseillée pour RECONF_ATTENTE.

                                  L'option --appliquer permet de modifier cette valeur dans le script principal, après création d'une sauvegarde .bak.

                                  2.22. Personnalisation des contrôles

                                  Le script est organisé en trois parties :

                                    En-tête contenant les variables configurables. Fonctions et tests extensibles. Workflow principal.

                                    Pour ajouter un test sur les postes, complétez TESTS_POSTE.

                                    Pour ajouter un contrôle serveur, complétez TESTS_SERVEUR.

                                    Pour ajouter une résolution, complétez les structures RESOLUTIONS et EXPLICATIONS.

                                    Les paramètres personnalisables comprennent notamment :

                                      Le nombre maximal de machines injoignables à analyser. Les seuils de redémarrage et de reconnexion. Les délais de reconfiguration. L'âge maximal de l'inventaire. L'espace disque minimal. Les ports TCP à tester. Les adresses MAC partagées connues. Les produits EDR reconnus. Le répertoire de publication des rapports.
                                      3. Questions fréquentes
                                      3.1. Un audit peut-il modifier les machines ?

                                      Non. L'option --dry-run n'effectue unaucune correction sur les postes et aucune modification en base.

                                      En revanche, le rapport chiffré est publié par défaut sur le serveur web. Pour éviter cette publication, ajoutez --sans-publication.

                                      3.2. Comment consulter une seule machine ?
                                      ./medulla_agents_V29.py --fiche PC1068

                                      Cette commande lit la fiche du dernier relevé sans relancer l'audit.

                                      3.3. Pourquoi une machine fonctionnelle n'est-elle pas corrigée ?

                                      Par sécurité, les machines ON qui répondent correctement en XMPP ne sont pas modifiées par défaut.

                                      Pour autoriser leur traitement, utilisez --full ou confirmez la question correspondante en mode interactif.

                                      3.4. Pourquoi une machine joignable en SSH n'est-elle pas corrigée ?

                                      Vérifiez les droits du compte pulseuser.

                                      S'il n'est plus administrateur local, le script ne lance aucune correction ni relance par SSH.

                                      Après rétablissement des droits, relancez le diagnostic et propose les actionsactions.

                                      applicables.
                                      3.5. Que signifie ANNULE_SSH_PERDU ?

                                      Le poste était joignable pendant l'audit, mais la connexion SSH a disparu avant la correction.

                                      AttentionLe :script Lesa interventionsannulé sensiblesl'intervention. nécessitentAucun unechangement confirmationn'a explicite.été effectué par cette action.

                                      3.6. Que signifie ECHEC_DROITS_ADMIN ?

                                      Le compte pulseuser ne dispose pas des droits administrateur locaux nécessaires.

                                      Vérifiez les actionsgroupes proposées avant delocaux, les autoriser.GPO et les politiques d'administration du poste.

                                      3.7. GLPI-Agent absent empêche-t-il les corrections ?

                                      Non, depuis la V28. Les corrections Medulla, les reconfigurations et les resets d'office restent possibles.

                                      AprèsSeule la demande d'inventaire est ignorée jusqu'à ce que GLPI-Agent soit utilisable et compatible.

                                      3.8. Que signifie « Vérification reportée » ?

                                      Le poste n'a pas répondu au contrôle après correction, relancezmême unaprès auditune seconde tentative.

                                      Relancez ultérieurement :

                                      sudo ./medulla_agents_V25.medulla_agents_V29.py --cible PC1068 --dry-run
                                      1.7.3.9. UtiliserQue signifie « Mise à jour automatique bloquée » ?

                                      L'agent reçoit les fichiers de mise à jour, mais ne dispose pas du descripteur nécessaire à leur installation.

                                      Le script peut proposer un reset d'office. Vérifiez d'abord que le menurelais interactifne présente pas d'erreur « Too many open files ».

                                      3.10. Que faire lorsqu'un poste ne résout pas le serveur ?

                                      PourVérifiez unela utilisationrésolution guidée,DNS exécutezdepuis simplementle poste :

                                      sudonslookup ./medulla_agents_V25.py<nom-du-serveur>

                                      LeSur scriptun proposeordinateur deportable sélectionner la langue, le périmètre et le mode de traitement.

                                      Choix Fonction 1 Audit des machines OFF. 2 Audit des machines ON. 3 Audit de toutes les machines. 4 Audit de machines désignées. 5 à 8 Audit avec possibilité de correction. 9 Audit des machines ON sans UUID d'inventaire. 10 Audit et actions sur les machines ON sans UUID d'inventaire.
                                      2. Usage complet

                                      Cette partie décrit les mécanismes techniques, les contrôles et les opérations avancées disponibles dans le script.

                                      2.1. Fonctionnement SSH et XMPP

                                      Le script choisit le moyen d'accès à chaque machine en fonction de son état dans Medulla.

                                      État Méthode Fonctionnement OFF SSH Connexion à l'adresse IP avec pulseuser et une clé SSH. ON XMPP Utilisationhors du plugin shellcommandréseau de l'agent.organisation, ON sans réponse XMPP SSHl'absence de repliVPN Tentativepeut expliquer le problème.

                                      La fiche de diagnostic viapeut SSH.

                                      proposer une ligne OFFhosts avecadaptée ficheen ONdernier correspondante XMPP Traitement de la fiche ON et signalement de la fiche potentiellement obsolète. recours.
                                      2.2.3.11. Prérequis techniques

                                      Le script doit être exécuté surréinstalle-t-il un serveuragent Medullaabsent disposant des accès nécessaires à l'infrastructure.

                                      ?

                                      VérifiezNon. notammentIl peut identifier qu'une réinstallation est nécessaire et fournir les méthodes correspondantes :

                                      • LaInstallation disponibilitédepuis dele Pythonserveur 3.
                                      Les droits administrateur nécessaires côté serveur. L'accès aux configurations et journaux Medulla. La disponibilité des services ejabberd et Medulla. Les fluxvia SSH et XMPPune nécessaires.tâche SYSTEM. LaInstallation cohérencesilencieuse dessur adressesle IPposte. etDéploiement despar fichesGPO pour plusieurs machines.
                                      2.3.12. ProtectionComment desvérifier machinesla fonctionnellesversion V29 ?

                                      La version V25 protège par défaut les machines ON dontCalculez l'agentempreinte réponddu correctement en XMPP.

                                      Ces machines peuvent être auditées, mais les corrections, relances et reconfigurations ne sont pas engagées automatiquement.

                                      Pour permettre leur traitement dans les conditions prévues par le script, l'option suivante existefichier :

                                      sha256sum medulla_agents_V29.py | cut --fullc1-16

                                      AttentionPour :la L'optionversion --fullV29 doit être réservée aux interventions justifiées sur des machines déjà fonctionnelles.

                                      2.4. Contrôle des services

                                      Le script examine notamment les services suivants :

                                        Le service principal de l'agent Medulla. medullanetnotify. sshdaemon.

                                        Il distingue les services démarrés, arrêtés, absents ou désactivés.

                                        Les services medullanetnotify et sshdaemon arrêtés peuvent être redémarrésdocumentée dans lece cadre des corrections proposées.

                                        Un service absent ou désactivé peut nécessiter une intervention manuelle ou une réinstallation.

                                        2.5. Contrôle de la configuration

                                        Le script analyse notamment les fichiers agentconf.ini et agentconf.ini.local, ainsi que les paramètres nécessaires à la communication XMPP.

                                        Il peut détecter des configurations incohérentes, des erreurs de journalisation ou des problèmes d'enregistrement.

                                        2.6. Contrôle des fichiers de l'agent

                                        Le diagnostic recherche les fichiers manquants, vides ou différents des fichiers de référence présents surmémo, le serveur.

                                        préfixe

                                        Il examine également certains composants de secours, notamment agentrescue.

                                        Lorsqu'une correctionattendu est applicable, le script peut réaliser une mise à niveau différentielle des fichiers.

                                        Sécurité : Le mécanisme est conçu pour éviter toute rétrogradation de l'agent et prévoit des sauvegardes et un retour arrière en cas de problème.

                                        2.7. Analyse des journaux

                                        Le script examine les journaux de l'agent, notamment xmpp-agent-machine.log.

                                        Il recherche entre autres :

                                          Les erreurs de fonctionnement. Les boucles de reconfiguration. Les messages ABORT RELAY DOWN ou ABORT INFO RELAY MISSING. Les anomalies de configuration. Les niveaux de journalisation DEBUG.
                                          2.8. Diagnostic réseau

                                          Le script contrôle la communication entre les postes, le serveur Medulla et les relais.

                                          Il peut notamment examiner les connexions TCP et signaler les ports inaccessibles.

                                          Les ports sont configurables dans l'en-tête du script afin de correspondre à l'architecture déployée.

                                          Limitation : Pour UDP, un envoi de paquet ne garantit pas que le service distant l'a reçu ou traité.

                                          2.9. Diagnostic des machines injoignables

                                          Lorsqu'une machine ne répond ni en SSH ni en XMPP, le script peut poursuivre l'analyse à partir des informations disponibles sur le serveur Medulla.

                                          Il examine notamment les journaux :

                                            ejabberd. Enregistrement des agents. Configuration. Souscription. Reconfiguration. Inventaire. Relais.

                                            Ces informations permettent d'orienter le diagnostic vers un problème réseau, un agent non connecté, un échec d'enregistrement ou une fiche devenue obsolète.

                                            2.10. Contrôle de l'inventaire

                                            Le script vérifie les traces de génération d'inventaire et les informations disponibles côté serveur.

                                            Pour diagnostiquer les machines ON sans UUID d'inventaire :

                                            sudo ./medulla_agents_V25.py --sans-inventaire --dry-run3f785ba0d4caefa1

                                            CeRemarque mode: permetCette d'identifierempreinte lescorrespond machinesau connectéesfichier dontV29 lade remontéeréférence. d'inventaireUne nécessitenouvelle publication ou une investigation.modification du script peut produire une empreinte différente.

                                            2.11.4. CorrectionsBonnes disponiblespratiques
                                            Action Description Démarrage des services Démarrage de services Medulla arrêtés lorsque cela est possible. Réparation Correction de certains éléments de configuration et de l'agent. Copie différentielle Restauration ou mise à niveau de fichiers nécessaires. Dossier de journaux Création de Medulla\var\log lorsqu'il manque. Relance Redémarrage contrôlé du service. Reconfiguration Demande de reconfiguration via le serveur Medulla. Reset Opération exceptionnelle de dernier recours.

                                            Toutes les anomalies ne peuvent pas être corrigées automatiquement. Les rapports permettent de distinguer les interventions réalisées des problèmes restants.

                                            2.12. Sécurités des corrections

                                            Avant les interventions,

                                            Lancer le script appliquedans plusieurs protections :
                                              screen. ConfirmationCommencer explicitepar un audit global en lecture seule. Consulter les fiches et le plan de réparation avant toute intervention. Tester les corrections sur une machine avant de traiter un groupe. Utiliser --limite pour encadrer les corrections sur un parc important. Ne pas utiliser --full sans avoir examiné les défauts des actions.machines fonctionnelles. NouvelleVérifier vérificationles droits pulseuser avant une correction SSH. Traiter les problèmes de l'identité du poste. Contrôle de son état de connexion. Arrêt contrôlé du servicerelais avant les modificationsresets qui l'exigent.d'office. SauvegardeConserver desles élémentsrapports modifiés.avant et après intervention. Possibilité de retour arrière. Absence de rétrogradation deProtéger l'agent.accès Absenceaux derapports répétitionet automatiquene despas corrections.diffuser les fichiers non chiffrés.
                                              2.13.5. Reconfiguration de l'agentRésumé

                                              La reconfiguration utilise le mécanisme need_reconf=1 dans la table xmppmaster.machines.

                                              Elle concerne une seule machine à la fois, ON et connectée en XMPP.

                                              Elle peut être proposée lorsque certains problèmes persistent :

                                                Inventaire GLPI absent. Relais injoignable. Configuration agentconf.ini à reprendre. Enregistrement incomplet.

                                                L'option --reconfigurermedulla_agents_V29.py permet de proposer cette opération même en l'absence d'un motif automatiquement identifié.

                                                Une confirmation distincte reste nécessaire.

                                                2.14. Reset de l'agent

                                                Le reset est prévu comme une opération de dernier recours sur les versions compatibles de Medulla, à partir de la version serveur 5.6.4.

                                                Il est soumis à des conditions strictes et concerne une seule machine.

                                                Il ne doit pas être utilisé comme première action sur un poste OFF.

                                                Attention : La reconfiguration et le reset sont deux opérations différentes. Le reset doit être réservé aux situations dans lesquelles les autres investigations et corrections n'ont pas permis de rétablir le fonctionnement.

                                                2.15. Méthode recommandée pour un parc important

                                                Étape 1 : réaliser un étatdiagnostic initial.du parc Windows géré par Medulla, de comprendre les anomalies et d'appliquer les corrections autorisées.

                                                Pour un premier diagnostic :

                                                sudoscreen -S medulla
                                                cd /root
                                                ./medulla_agents_V25.medulla_agents_V29.py --perimetre tout --dry-run

                                                ÉtapePour 2corriger :une analysermachine leaprès planexamen de remédiation.

                                                son

                                                Regroupez les anomalies par famillerapport : services, réseau, configuration, relais, inventaire ou fichiers de l'agent.

                                                Étape 3 : tester une correction sur une machine.

                                                sudo ./medulla_agents_V25.medulla_agents_V29.py --cible PC1068 --oui

                                                ÉtapePour 4consulter sa dernière fiche : contrôler le résultat.

                                                sudo ./medulla_agents_V25.medulla_agents_V29.py --ciblefiche PC1068 --dry-run

                                                ÉtapePour 5republier le dernier rapport : étendre progressivement.

                                                Après

                                                ./medulla_agents_V29.py validation, appliquez la même méthode à un groupe de machines présentant des anomalies comparables.
                                                
                                                2.16. Dépannage des problèmes fréquents
                                                Problème Vérifications recommandées Machine OFF et SSH inaccessible Vérifier l'alimentation, l'adresse IP, les flux réseau et sshdaemon. Machine ON sans réponse XMPP Vérifier la session XMPP, shellcommand et les journaux. Agent en boucle de reconfiguration Examiner les journaux et l'enregistrement XMPP. Relais indisponible Contrôler l'affectation du relais, son service et les flux réseau. Inventaire absent Vérifier la génération de l'inventaire et les journaux du serveur. Fichiers manquants Comparer avec les fichiers de référence du serveur. Correction partielle Consulter les journaux individuels et les problèmes restants. Fiche OFF potentiellement obsolète Vérifier la correspondance avec une fiche ON avant suppression.
                                                2.17. Ajouter des contrôles personnalisés
                                                --publier-dernier

                                                Le scriptrapport contientHTML deuxfournit ensemblesune devision testsglobale extensiblesdu :

                                                parc,
                                                  tandis TESTS_POSTE : contrôles exécutés surque les postesfiches audités.individuelles TESTS_SERVEUR : contrôles exécutés sur le serveur Medulla.

                                                  Ces tests peuvent enrichir les rapports,présentent les diagnostics et les recommandationsplans de remédiation.réparation adaptés à chaque machine.

                                                  Les modifications doivent être testées avant toute utilisation en production.

                                                  2.18. Options et aide

                                                  Pour afficher la liste complète des options de la version installée :

                                                  python3 medulla_agents_V25.py --help

                                                  Pour vérifier la syntaxe Python :

                                                  python3 -m py_compile medulla_agents_V25.py

                                                  Pour obtenir des traces supplémentaires lors d'un diagnostic :

                                                  sudo ./medulla_agents_V25.py --dry-run --verbose
                                                  3. Bonnes pratiques
                                                    Commencer systématiquement par un audit sans correction. Privilégier une machine cible pour la première intervention. Conserver les rapports avant et après correction. Examiner les problèmes restants après intervention. Réserver --full aux interventions nécessaires sur les machines fonctionnelles. Utiliser la reconfiguration et le reset uniquement lorsque cela est justifié. Vérifier l'état réel d'une machine avant de conclure qu'un agent est défectueux. Éviter les corrections massives sans validation préalable.
                                                    4. Résumé

                                                    Le script medulla_agents_V25.py permet d'auditer les agents Medulla, d'identifier les anomalies, de générer un plan de remédiation et de proposer des corrections encadrées.

                                                    Pour commencer, téléchargez le script :

                                                    wget https://dl.medulla-tech.io/ma/medulla_agents_V25.py
                                                    chmod +x medulla_agents_V25.py

                                                    Puis lancez un audit global :

                                                    sudo ./medulla_agents_V25.py --perimetre tout --dry-run

                                                    Consultez ensuite plan_de_remediation.csv pour identifier les premières interventions.

                                                    Téléchargement : medulla_agents_V25.py