From 570b89e50cdd2f06abad98afc6f6be55e023c49f Mon Sep 17 00:00:00 2001 From: Jason Secula Date: Sat, 5 Jul 2025 13:59:26 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20des=20informations=20con?= =?UTF-8?q?cernant=20les=20scripts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 81 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 5111dd7..1430ca2 100644 --- a/README.md +++ b/README.md @@ -3,28 +3,50 @@ ## Explication de l'usage des scripts et de la configuration : ### Fichier de configuration global settings.json -Les scripts prennent les informations de configuration du fichier settings.json, si celui-ci n'existe pas au lancement d'un script, il est automatiquement créé avec des valeurs d'exemples. -Voici une liste des paramètres du fichier de configuration et les valeurs attendues (chaque valeur doit être entre " ") : +Les scripts prennent les informations de configuration du fichier de configuration présent dans le répertoire conf, si celui-ci n'existe pas au lancement d'un script, il est automatiquement créé avec des valeurs d'exemples. Un chemin personnalisé vers un fichier de configuration peut être renseigné avec le paramètre -c. - - **"airwatchServer"**: l'adresse du serveur Airwatch - - **"airwatchAPIKey"**: la clé API récupéré dans Airwatch - - **"airwatchAuthMethod"**: défini la méthode d'authentification, peut prendre la valeur ***"CMSURL"*** pour l'authentification par certificat ou ***"password"*** pour l'authentification par mot de passe. - - **"airwatchCertPath"**: le chemin vers le certificat si la méthode d'authentification est par certificat. - - **"airwatchCertPass"**: le mot de passe du certificat si celui-ci en possède un, laissez une chaîne vide si vous n'avez pas mis de mot de passe. - - **"airwatchAPIUser"**: le nom de l'utilisateur pour l'authentification API dans Airwatch. - - **"airwatchAPIPassword"**: le mot de passe de l'utilisateur si l'authentification par mot de passe est choisie. - - **"glpiServer"**: l'adresse du serveur GLPI avec un / à la fin. - - **"glpiAppToken"**: le token d'application GLPI. - - **"glpiUserToken"**: le token de l'utilisateur GLPI utilisé pour les requêtes API. - - **"stagingUser"**: le nom du compte de staging présent dans Airwatch. - - **"userAgent"**: Un nom pour l'user agent tel qu'il sera visible dans GLPI, cela permet d'identifier l'instance Airwatch (Prod / Pré-prod) par exemple. +Voici un exemple du fichier de configuration : +```toml +[AIRWATCH] +Server = "https://airwatchServer" +APIKey = "APIKEY" +# Méthode d'authentification (CMSURL or PASSWORD) +# CMSURL permet l'authentification avec un certificat utilisateur (CertificatePath, CertificatePassword) +# PASSWORD permet l'authentification avec un nom d'utilisateur et un mot de passe (APIUser, APIPassword) +AuthenticationMethod = "CMSURL" +CertificatePath = "/path/to/cert" +CertificatePassword = "12345" +APIUser = "UserAPI" +APIPassword = "PasswordUserAPI" + +# Utilisateur de staging que l'on va remplacer par l'utilisateur trouvé dans GLPI +StagingUser = "staging-pr" + +[GLPI] +Server = "http://127.0.0.1/glpi" +AppToken = "GLPIAppToken" +UserToken = "GLPIUserToken" + +# User agent qui sera visible sur GLPI lors de la synchronisation +UserAgent = "Airwatch Synchronizer" + +[LOGS] +Enabled = true +# Chemin où seront créé les fichiers de log +Path = "./logs/" +# Mode debug pour avoir plus d'informations +Debug = false + +``` --- ### syncGLPI.py -Le script syncGLPI.py permet de synchroniser les données des appareils présents dans Airwatch avec un inventaire GLPI. - -Au début, le script va vérifier la présence de doublons en fonction du numéro de série et garder seulement le dernier à s'être enrôlé, puis il va procéder à la vérification de la présence des appareils dans l'inventaire GLPI pour procéder à la synchronisation des données. +Le script syncGLPI.py permet de synchroniser les données des appareils présents dans Airwatch avec un inventaire GLPI. Les actions du script : + - vérification et suppression des doublons en fonction du numéro de série et de la date de dernier enrôlement + - vérification de la présence des appareils dans l'inventaire GLPI et envoi d'un inventaire à partir des données d'Airwatch pour mettre à jours les informations + - modification du numéro de série de l'appareil sur GLPI si celui-ci n'est pas identique à celui d'Airwatch + - modification du friendlyname de l'appareil sur Airwatch à partir du nom d'inventaire de l'appareil sur GLPI #### Synchronisation Les éléments synchronisés de Airwatch vers GLPI : @@ -33,6 +55,7 @@ Les éléments synchronisés de Airwatch vers GLPI : - UUID - le nom du système d'exploitation et sa version - les logiciels présents sur la machine + - le numéro de série Les éléments synchronisés de GLPI vers Airwatch : - Le nom d'inventaire de la machine qui est mis pour le friendlyname @@ -40,23 +63,27 @@ Les éléments synchronisés de GLPI vers Airwatch : #### Paramètres Ce script possède les paramètres suivants qui sont optionnels pour son exécution : - - **-debug** : affiche des informations lors de son exécution, utile pour résoudre des problèmes liés à des droits d'accès API ou des problèmes d'ouvertures réseaux - - **-searchFilter** : permet de filtrer la recherche des appareils dans airwatch sur un attribut spécifique parmi la liste suivante : "Id", "SerialNumber", "Imei", "UserName" - - **-searchValue** : la valeur pour la recherche lorsque -searchFilter est utilisé - - **-force** : permet d'outrepasser la vérification du verrou posé par le script lors de son exécution + - **-sF / --searchFilter** : permet de filtrer la recherche des appareils dans airwatch sur un attribut spécifique parmi la liste suivante : "Id", "SerialNumber", "Imei", "UserName" + - **-sV / --searchValue** : la valeur pour la recherche lorsque -searchFilter est utilisé + - **-f / --force** : permet d'outrepasser la vérification du verrou posé par le script lors de son exécution + - **-c / --configPath** : permet de définir un chemin vers un fichier de configuration a utilisé pour l'exécution du script + - **-s / --silent** : exécute le script sans faire de retour dans la console, les informations seront toujours présentes dans les fichiers de log + - **-v / --verbose** : affiche des informations lors de son exécution, utile pour résoudre des problèmes liés à des droits d'accès API ou des problèmes d'ouvertures réseaux --- ### StagingUserAssignation.py Le script StagingUserAssignation.py permet d'assigner les appareils en staging qui sont assignés à un utilisateur de staging à l'utilisateur renseigné dans l'inventaire GLPI. -Il récupère le nom de l'utilisateur de staging dans le fichier settings.json. +Il récupère le nom de l'utilisateur de staging dans le fichier de configuration. #### Paramètres - - **-debug** : affiche des informations lors de son exécution, utile pour résoudre des problèmes liés à des droits d'accès API ou des problèmes d'ouvertures réseaux - - **-force** : permet d'outrepasser la vérification du verrou posé par le script lors de son exécution - - **-staginguser** : permet de préciser l'utilisateur de staging pour la recherche des appareils à modifier (override le fichier de paramètres) - - **-serialnumber** : permet de filtrer sur un numéro de série précis + - **-u / --staginguser** : permet de préciser l'utilisateur de staging pour la recherche des appareils à modifier (override le fichier de paramètres) + - **-sn / --serialnumber** : permet de filtrer sur un numéro de série précis + - **-f / --force** : permet d'outrepasser la vérification du verrou posé par le script lors de son exécution + - **-c / --configPath** : permet de définir un chemin vers un fichier de configuration a utilisé pour l'exécution du script + - **-s / --silent** : exécute le script sans faire de retour dans la console, les informations seront toujours présentes dans les fichiers de log + - **-v / --verbose** : affiche des informations lors de son exécution, utile pour résoudre des problèmes liés à des droits d'accès API ou des problèmes d'ouvertures réseaux ## Dépendances Installation des paquets linux : @@ -73,7 +100,7 @@ yum install -y python3 python3-pip git **Dépendances python** ``` -python3 -m pip install cryptography requests +python3 -m pip install cryptography requests toml ``` ## Installation des scripts