You are not logged in.
Pages: 1
Bonjour à tous et à toutes.
Je viens lancer une bouteille à la mer car je suis face à un problème que je n'arrive pas à résoudre.
On m'a demandé de refaire de zéro notre serveur GLPI (suite à des incohérences) mais j'ai besoin de transférer tous les tickets existant de l'ancien serveur (on va l'appeler Serveur 1 avec GLPI 10.0.7) vers le nouveau serveur (Serveur 2 avec GLPI 10.0.16).
Je voulais passer par l'API et jusqu'à maintenant j'arrive à exporter mes tickets dans un fichier json sur le premier serveur avec cette suite de commandes :
Pour initialiser la session
curl -X GET \
-H 'Content-Type: application/json' \
-H "Authorization: user_token HWsRgP488iuv8IguH5wvTOlWWf0OGfNmfRRL2jmg" \
-H "App-Token: PSROA8h4vH2GsemIBuRlqyNXoBpmSHaQdOXwZzSy" \
'http://Serveur1/glpi/apirest.php/initSession'
Pour récupérer les tickets et les exporter dans un json sous forme de tableau
curl -X GET http://Serveur1/glpi/apirest.php/Ticket \
-H 'Content-Type: application/json' \
-H 'App-Token: PSROA8h4vH2GsemIBuRlqyNXoBpmSHaQdOXwZzSy' \
-H 'Authorization: user_token HWsRgP488iuv8IguH5wvTOlWWf0OGfNmfRRL2jmg' \
-H 'Session-Token: vkpee8vl258v4dttu4i5a54c7q' \
-o tickets_exportes.json
jq 'map(del(.id, .entities_id, .date_mod, .users_id_lastupdater))' tickets_exportes.json > tickets_pour_import.json
A ce moment la il me crée le fichier sous ce format :
[
{
"name": "problème FAX",
"date": "2023-04-06 11:40:16",
"closedate": "2023-06-16 14:26:54",
"solvedate": "2023-06-16 14:26:54",
"takeintoaccountdate": "2023-04-07 14:05:05",
"status": 6,
"users_id_recipient": 123,
"requesttypes_id": 1,
"content": "<p>certains faxes ne passent pas </p>\n<p>problème de connexion </p>",
"urgency": 3,
"impact": 3,
"priority": 3,
"itilcategories_id": 2,
"type": 1,
"global_validation": 1,
"slas_id_ttr": 0,
"slas_id_tto": 0,
"slalevels_id_ttr": 0,
"time_to_resolve": null,
"time_to_own": null,
"begin_waiting_date": null,
"sla_waiting_duration": 0,
"ola_waiting_duration": 0,
"olas_id_tto": 0,
"olas_id_ttr": 0,
"olalevels_id_ttr": 0,
"ola_ttr_begin_date": null,
"internal_time_to_resolve": null,
"internal_time_to_own": null,
"waiting_duration": 6045230,
"close_delay_stat": 99168,
"solve_delay_stat": 99168,
"takeintoaccount_delay_stat": 95089,
"actiontime": 0,
"is_deleted": 0,
"locations_id": 63,
"validation_percent": 0,
"date_creation": "2023-04-06 11:40:16",
"ola_tto_begin_date": null,
"links": [
{
"rel": "Entity",
"href": "http://srv-glpi10/glpi/apirest.php/Entity/35"
},
{
"rel": "User",
"href": "http://srv-glpi10/glpi/apirest.php/User/24"
},
{
"rel": "User",
"href": "http://srv-glpi10/glpi/apirest.php/User/123"
},
{
"rel": "RequestType",
"href": "http://srv-glpi10/glpi/apirest.php/RequestType/1"
},
{
"rel": "ITILCategory",
"href": "http://srv-glpi10/glpi/apirest.php/ITILCategory/2"
},
{
"rel": "Location",
"href": "http://srv-glpi10/glpi/apirest.php/Location/63"
},
{
"rel": "Document_Item",
"href": "http://srv-glpi10/glpi/apirest.php/Ticket/4/Document_Item/"
},
{
"rel": "TicketTask",
"href": "http://srv-glpi10/glpi/apirest.php/Ticket/4/TicketTask/"
},
{
"rel": "TicketValidation",
"href": "http://srv-glpi10/glpi/apirest.php/Ticket/4/TicketValidation/"
},
{
"rel": "TicketCost",
"href": "http://srv-glpi10/glpi/apirest.php/Ticket/4/TicketCost/"
},
{
"rel": "Problem_Ticket",
"href": "http://srv-glpi10/glpi/apirest.php/Ticket/4/Problem_Ticket/"
},
{
"rel": "Change_Ticket",
"href": "http://srv-glpi10/glpi/apirest.php/Ticket/4/Change_Ticket/"
},
{
"rel": "Item_Ticket",
"href": "http://srv-glpi10/glpi/apirest.php/Ticket/4/Item_Ticket/"
},
{
"rel": "ITILSolution",
"href": "http://srv-glpi10/glpi/apirest.php/Ticket/4/ITILSolution/"
},
{
"rel": "ITILFollowup",
"href": "http://srv-glpi10/glpi/apirest.php/Ticket/4/ITILFollowup/"
},
{
"rel": "Ticket_User",
"href": "http://srv-glpi10/glpi/apirest.php/Ticket/4/Ticket_User/"
},
{
"rel": "Group_Ticket",
"href": "http://srv-glpi10/glpi/apirest.php/Ticket/4/Group_Ticket/"
},
{
"rel": "Supplier_Ticket",
"href": "http://srv-glpi10/glpi/apirest.php/Ticket/4/Supplier_Ticket/"
}
]
}
]
J'ai ensuite un script qui doit se connecter à l'API du Serveur 2 et y importer les tickets qui sont dans le fichier tickets_pour_import.json :
#!/bin/bash
# Définir les variables
API_URL="http://Serveur2/apirest.php/Ticket"
USER_TOKEN="5wY1GHDAhXBZRu3dsDidWTAAncmEjnQxcqkcttzJ"
SESSION_TOKEN="s0ito7hco0q8pd580997ump2e0"
APP_TOKEN="vzkOeGGkcdacDPUuzAOBJvd7FSQN0HXISiZErSxR"
# Charger les tickets depuis le fichier JSON (qui doit être un tableau d'objets JSON)
tickets=$(cat tickets_filtrés.json)
# Vérifier que le fichier JSON est un tableau d'objets
if [[ $tickets != \[* ]]; then
echo "Erreur : Le fichier JSON doit être un tableau d'objets."
exit 1
fi
# Envoi du tableau complet de tickets
response=$(curl -s -w "\n%{http_code}" -X POST "$API_URL" \
-H "Content-Type: application/json" \
-H "Authorization: user_token $USER_TOKEN" \
-H "Session-Token: $SESSION_TOKEN" \
-H "App-Token: $APP_TOKEN" \
-d "$tickets")
http_code=$(echo "$response" | tail -n1)
body=$(echo "$response" | head -n -1)
if [ "$http_code" -eq 201 ]; then
echo "Tous les tickets ont été importés avec succès."
else
echo "Erreur lors de l'importation des tickets. Code HTTP: $http_code"
echo "Réponse du serveur: $body"
fi
C'est la que ça coince. Quand je lance le script, j'ai toujours cette erreur :
Erreur lors de l'importation des tickets. Code HTTP: 400
Réponse du serveur: ["ERROR_BAD_ARRAY","Le paramètre input doit être un tableau d'objets; Afficher la documentation dans votre navigateur à http://172.24.1.2/apirest.php/#ERROR_BAD_ARRAY"]
Est-ce que quelqu'un saurait me dire si j'ai fais une erreur quelque part ?
Je tiens à préciser que je suis tech depuis seulement quelques mois, donc tout ce qui est code est encore un monde très obscur pour moi ?
Merci par avance !
Offline
Pages: 1