2025-09-12 12:48:03 +02:00
2025-07-10 23:05:00 +02:00
2025-07-10 23:05:00 +02:00
2025-07-10 23:05:00 +02:00
2025-07-10 23:09:30 +02:00

Scripts Airwatch GLPI

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 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.

Voici un exemple du fichier de configuration :

[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. 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 :

  • l'utilisateur de l'appareil
  • la dernière date de remontée vers le serveur Airwatch
  • 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

Paramètres

Ce script possède les paramètres suivants qui sont optionnels pour 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 de configuration.

Paramètres

  • -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

Installation avec docker

Dépendances

Installation des paquets linux :

debian/ubuntu

apt-get install -y python3 python3-pip git 

redhat/centos

yum install -y python3 python3-pip git

Modules python nécessaires

Voici la liste des modules python nécessaires au fonctionnement des scripts :

  • cryptography
  • requests
  • toml

Un fichier requirements.txt contenant les modules dont dépendent les scripts est présent dans le répertoire scripts. Les modules peuvent être installés de plusieurs façons :

Avec le gestionnaire de paquet python Pip

python -m pip install -r requirements.txt

Avec le gestionnaire de paquet apt (debian/ubuntu)

apt-get install -y python3-cryptography python3-requests python3-toml

Avec le gestionnaire de paquet yum (redhat/centos)

yum install -y python3-cryptography python3-requests python3-toml

Installation des scripts

Pour installer les scripts :

  1. Télécharger le contenu de ce projet dans un répertoire du serveur :
git clone https://gitlab.forge.education.gouv.fr/jsecula/glpi-airwatch-sync.git
  1. Modifier le contenu du fichier de configuration global (settings.json) avec les valeurs correspondant à votre infrastructure. Les clés et certificats API se récupèrent aux emplacements suivants :
  • Clé API Airwatch: Groupes et Paramètres > Tous les paramètres > Système > Avancé > Interface de programmation (API) > API REST

  • Certificat Airwatch: lors de la création ou la modification d'un utilisateur Admin

  • Token d'application GLPI: Configuration > Générale > API

  • Token utilisateur GLPI: Administration > Utilisateurs > choisir l'utilisateur > Jeton d'API

  1. Lancement automatique avec systemd :

Création des services et des timers dans /etc/systemd/system/ :

airwatchSync.service

[Unit]
Description=Script Airwatch pour la synchronisation des données Airwatch et GLPI.

[Service]
Type=oneshot
WorkingDirectory=/opt/airwatchSync
ExecStart=/opt/airwatchSync/syncGLPI.py
User=root

airwatchSync.timer (exécution toutes les heures)

[Unit]
Description=Script Airwatch pour la synchronisation des données Airwatch et GLPI.

[Timer]
OnUnitInactiveSec=1h
AccuracySec=1us
Unit=airwatchSync.service

[Install]
WantedBy=timers.target

airwatchStaging.service

[Unit]
Description=Script qui assigne les appareils en staging aux utilisateurs en se basant sur GLPI.

[Service]
Type=oneshot
WorkingDirectory=/opt/airwatchSync
ExecStart=/opt/airwatchSync/StagingUserAssignation.py
User=root

airwatchStaging.timer (exécution toutes les minutes)

[Unit]
Description=Script qui assigne les appareils en staging aux utilisateurs en se basant sur GLPI.

[Timer]
OnUnitInactiveSec=1m
AccuracySec=1us
Unit=airwatchStaging.service

[Install]
WantedBy=timers.target

Rechargement de systemd et activation des timers

systemctl daemon-reload
systemctl enable airwatchSync.timer airwatchStaging.timer
systemctl start airwatchSync.timer airwatchStaging.timer
Description
No description provided
Readme 229 KiB
Languages
Python 100%