Vous avez expérimenté une première utilisation de l'GrasAPI REST de GLPI avec l'outil Postman. Cet outil est très pratique pour tester et déterminer les bons paramètres à définir dans vos requêtes d'API REST qui utilisent les protocoles HTTTP ou HTTPS.
Pour rappel il faut s'appuyer sur la documentation de l'API pour :
Dans cette activité, vous allez réutiliser ce que vous avez expérimenté avec Postman pour exécuter des requêtes avec l'utilitaire cURL et le langage de programmation Python.
Vous allez utiliser la bibliothèque requests de Python. Si nécesaier mettez à jour vote environnement python :
C:> python -m pip install --upgrade pip C:> pip install request
Pour obtenir un jeton de session, il faut effectuer une requête Init session en renseignant des paramètres dans l'entête (Headers) :
C:> curl -X GET -H "Authorization: user_token uuu..." -H "App-Token: aaa..." "http://path/to/glpi/apirest.php/initSession" { "session_token":"sss..." }
import json import requests url = "http://path/to/glpi/apirest.php/initSession" headers = { "Authorization": "user_token uuu...", "App-Token": "aaa..." } reponse = requests.get(url, headers = headers) if reponse.status_code == 200: print('success: ' + str(reponse.status_code)) json_data = reponse.json() print(json_data) else: print('error: ' + str(reponse.status_code))
$apptoken = "aaa..." $usertoken = "uuu..." $headers = @{ "Authorization" = "user_token " + $usertoken "App-Token" = $apptoken } $baseURL = 'http://path/to/glpi/apirest.php' $url = $baseURL + "/initSession" $req = Invoke-RestMethod -Uri $url -Headers $headers # conversion JSON => texte $resultat = write-host $req | ConvertFrom-Json write-host $resultat
Pour la liste des entités vous devez exécuter la requête getMyEntities en renseignant des paramètres dans l'entête (Headers) :
C:\>curl -X GET -H "App-Token: aaa..." -H "Session-Token: sss..." "http://192.168.1.70/glpi/apirest.php/getMyEntities?is_recursive=true" { "myentities":[{"id":1,"name":"Entité racine > Bâtiment 1"}, { "id":2,"name":"Entité racine > Bâtiment 1 > Etage 0"}, {"id":0,"name":"Entité racine"} ]}
import json import requests url = "http://path/to/glpi/apirest.php/getMyEntities?is_recursive=true" headers = { "App-Token": "aaa...", "Session-Token": "sss...", } reponse = requests.get(url, headers = headers) if reponse.status_code == 200: print('success: ' + str(reponse.status_code)) json_data = reponse.json() print(json_data) else: print('error: ' + str(reponse.status_code))
$apptoken = "aaa..." $sessiontoken = "sss..." $headers = @{ "Session-Token" = $sessiontoken "App-Token" = $apptoken } $baseURL = 'http://path/to/glpi/apirest.php' $url = $baseURL + "/getMyEntities" $req = Invoke-RestMethod -Uri $url -Headers $headers # conversion JSON => texte $resultat = write-host $req | ConvertFrom-Json write-host $resultat
Travail à faire : Créer le script python itemcomputer.py permettant d'afficher les informations sur votre ordinateur renseignées dans GLPI.
Fonctionnement du script python :