You are not logged in.
Bonjour,
Je n'arrive pas à surcharger mon inventaire avec un fichier XML.
Voici le message d'erreur:
[error] [http client] communication error: 400 Bad Request, JSON does not validate. Violations:
Additional properties not allowed: HARDWARE at #->properties:content
Voici le contenu de mon fichier INVENTORY.XML:
<?xml version="1.0" encoding="UTF-8" ?>
<REQUEST>
<CONTENT>
<HARDWARE>
<INVENTORYNUMBER>000000</INVENTORYNUMBER>
</HARDWARE>
</CONTENT>
<DEVICEID>dumbid</DEVICEID>
<QUERY>INVENTORY</QUERY>
</REQUEST>
Le but final étant de ne pas utiliser la variable $hostname de la machine pour l'inventorier, mais bien une valeur rentrée dans notre script
Last edited by bhackus (2023-11-10 19:33:04)
Offline
Bonjour,
Il ne s'agit pas d'un schéma d'inventaire valide pour la fonctionnalité d'inventaire native GLPI/l'agent GLPI. Vous pouvez voir le schéma et quelques exemples ici :
GLPI Collaborator and Plugin Developer.
My non-English comments are automated translations. Sorry for any confusion that causes.
Mes commentaires non anglais sont des traductions automatiques. Désolé pour toute confusion qui cause.
Mis comentarios que no están en inglés son traducciones automáticas. Perdón por cualquier confusión que cause.
Offline
Merci cconard96 pour le lien,
Après étude de la documentation, je suis arrivé à la mauvaise conclusion suivante:
<?xml version="1.0" encoding="UTF-8" ?>
<REQUEST>
<DEVICEID>dumbid</DEVICEID>
<INVENTORYNUMBER>000000</INVENTORYNUMBER>
<QUERY>INVENTORY</QUERY>
</REQUEST>
J'ai désormais l'erreur suivante dans le log de l'agent:
[error] no suitable content found
Je dois donc louper quelque chose, car si j'ai bien compris mon erreur, je suis juste en train de demander à modifier le "DEVICE" "dumbid" au lieu de lui donner ce nom.
Cependant, je n'ai rien réussi à trouver parmi les différents fichiers d'exemples parcourus.
Offline
C'est résolu,.
Voici un résumé des étapes, la méthode n'est peut être pas la plus propre, mais cela fonctionne:
Récupération du format du json grâce à la commande (merci GBOUGARD):
sudo glpi-inventory --partial hardware
Création d'un fichier inventory.dumb avec le contenu suivant pour modifier uniquement le champ "name":
{
"action": "inventory",
"content": {
"hardware": {
"name": "dumbname"
}
}
}
On manipule le fichier et on inventorie grâce au script bash suivant:
#on récupère le nom de la machine
echo -n "Numero Inventaire?: "
read ninventaire
#on fait une copie du fichier modele afin de garder un original propre, puis on remplace le texte "dumbname"
cp inventory.dumb inventory.json
grep -q "dumbname" inventory.json | sed -i "s/dumbname/${ninventaire}/g" inventory.json
echo 'Le nom de machine dans GLPI est : '$ninventaire
#Execution de glpi-agent afin deffectuer linventaire
glpi-agent --additional-content="inventory.json"
rm inventory.json
Last edited by bhackus (2023-11-10 19:34:04)
Offline