Outils pour utilisateurs

Outils du site


si7:configuration:glpi_gestionapirestpython

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
si7:configuration:glpi_gestionapirestpython [2021/03/04 21:49]
techer.charles_educ-valadon-limoges.fr
si7:configuration:glpi_gestionapirestpython [2021/03/05 12:03] (Version actuelle)
techer.charles_educ-valadon-limoges.fr [Exécution de la requête en Python]
Ligne 13: Ligne 13:
  
 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**. 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**.
 +
 +===== Préparer votre environnement Python =====
 +Vous allez utiliser la bibliothèque **requests** de Python. Si nécesaier mettez à jour vote environnement python : 
 +    * mettre à jour pip
 +    * installer le module requests
 +<code shell>
 +C:> python -m pip install --upgrade pip
 +C:> pip install request
 +</code>
  
 ===== Obtenir un jeton de session (Session-Token) ===== ===== Obtenir un jeton de session (Session-Token) =====
Ligne 20: Ligne 29:
  
 ==== Exécution de la requête avec cURL ==== ==== Exécution de la requête avec cURL ====
-<code shell>+<code json>
 C:> curl -X GET -H "Authorization: user_token uuu..." -H "App-Token: aaa..." "http://path/to/glpi/apirest.php/initSession" C:> curl -X GET -H "Authorization: user_token uuu..." -H "App-Token: aaa..." "http://path/to/glpi/apirest.php/initSession"
-{"session_token":"sss..."}+{ 
 +  "session_token":"sss..." 
 +}
 </code> </code>
  
 ==== Exécution de la requête en Python ==== ==== Exécution de la requête en Python ====
-  * script Python sessio_token.py +  * script Python **session_token.py** permettant d'obtenir un jeton de session 
-<code shell+<code python
-import urllib.parse+import json
 import requests import requests
-api = "http://path/to/glpi/apirest.php/initSession" +url = "http://path/to/glpi/apirest.php/initSession" 
-user_token = "uuu..." +  
-App-Token "aaa..." +headers  
 +    "Authorization": "user_token uuu...", 
 +    "App-Token": "aaa..." 
 +}
  
-url = main_api + urllib.parse.urlencode({"key":key, "from":orig, "to":dest}) +reponse = requests.get(url, headers = headers)
-json_data = requests.get (url).json() +
-print(json_data)+
  
 +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))
 +</code>
  
-C:curl -X GET -H "Authorization: user_token uuu..." -H "App-Token: aaa..." "http://path/to/glpi/apirest.php/initSession" +==== Exécution de la requête en Powershell ==== 
-{"session_token":"sss..."}+  * script Powershell **session_token.ps1** permettant d'obtenir un jeton de session 
 +<code powershell> 
 +$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
 </code> </code>
 +===== Requête pour obtenir la liste des entités accessibles à un utilisateur =====
 +Pour la liste des entités vous devez exécuter la requête **getMyEntities** en renseignant des paramètres dans l'entête (**Headers**) :
 +  * le jeton de session **Session-Token** que vous venez d'obtenir ;
 +  * le jeton d'application **App-Token**.
 +
 +==== Exécution de la requête avec cURL ====
 +<code json>
 +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"}
 +               ]}
 +</code>
 +
 +==== Exécution de la requête en Python ====
 +  * script Python **getmyentities.py** permettant d'obtenir la liste des entités (de manière récursive)
 +<code python>
 +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))
 +</code>
 +
 +==== Exécution de la requête en Powershell ====
 +  * script Powershell **getmyentities.ps1** permettant d'obtenir la liste des entités (de manière récursive)
 +<code powershell>
 +$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
 +</code>
 +
 +==== Travail à faire ====
 +
 +<WRAP center round todo>
 +**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 : 
 +  * vous aurez à renseigner en début de script ou en ligne de commande  ;
 +    * l'**ID** de votre ordinateur ;
 +    * le type d'élément (**itemtype**) : **Computer**
 +    * le jeton d'application communiqué par l'enseignant :   **App-Token** ;
 +  * il est nécessaire de faire un première requête afin d'obtenir le jeton de session (requête **initSession**);
 +  * une deuxième requête doit afficher ensuite les informations sur votre ordinateur pour l'**ID indiqué** (requête **getItem**)
 +
 +</WRAP>
 +
 ==== Retour Activité A8 ==== ==== Retour Activité A8 ====
   * [[glpi_gestionconfig_00|A8 - La gestion des configurations avec GLPI]]   * [[glpi_gestionconfig_00|A8 - La gestion des configurations avec GLPI]]
si7/configuration/glpi_gestionapirestpython.1614890952.txt.gz · Dernière modification: 2021/03/04 21:49 de techer.charles_educ-valadon-limoges.fr