You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2019-01-17 11:43:52

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Ajout d'un port réseau sur un device

Hello,

Je cherche une solution pour ajouter un port réseau à un device. Idéalement, si je pouvais ajouter le port avec la mac et l'IP directement à un device, ce serait super.
N'ayant pas encore trouvé comme faire, j'avance par petits pas...

Quand j'essaye d'ajouter le port réseau (sans encore le lier) j'obtiens un message me disant que je n'ai pas le droit. J'ai fait le test avec un login super-admin avec le même résultat sad

Invoke-RestMethod : ["ERROR_GLPI_ADD","You don't have permission to perform this action."]

Dans les détails de l'ajout du port, je spécifie uniquement son nom et la mac.


Si vous avez une idée, je suis preneur.

Bonne journée,
JC

Offline

#2 2019-01-18 14:59:15

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

Please, help me sad

Offline

#3 2019-01-18 16:22:03

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,146

Re: Ajout d'un port réseau sur un device

il faut au moins définir à quel type et à quel element vous voulez l'associer, ainsi que le type de port à ajouter

$input='{ "input": {"items_id": "179"
        ,"itemtype": "NetworkEquipment"
        ,"entities_id": "2"
        ,"is_recursive": "0"
        ,"logical_number": "01"
        ,"name": "portbyAPI"
        ,"instantiation_type": "NetworkPortEthernet"
        }
    }';
        $url=$api_url."/Networkport/";


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#4 2019-01-21 11:46:48

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

Merci!..

Je vais tester ça et je reviens :-)

Offline

#5 2019-01-21 12:13:25

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

Fantastique!.. Ca marche :-)

Une dernière question pour la route... Est-ce qu'il est possible d'ajouter l'IP en même temps? Jusque là, j'ai ajouté la MAC et ça fonctionne au poil.

Offline

#6 2019-02-14 19:03:35

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

Bon...
Ca fait un bon bout de temps que je teste tout ce que je peux et je ne parviens pas à trouver les infos relatives au Network Names (et, surtout, aux IPs associées).
J'arrive à récupérer le nom du network name mais pas les IP.
Une idée de comment lire/écrire ça?

Merci!

Offline

#7 2019-02-15 10:13:21

orthagh
Administrator
From: TECLIB - CAEN
Registered: 2010-11-30
Posts: 662
Website

Re: Ajout d'un port réseau sur un device

Hello.

Dans les tests unitaires de GLPI, j'ai développé l'ajout d'un port éthernet avec nom réseau + IP:
CF : https://github.com/glpi-project/glpi/bl … #L538-L565

Vous pouvez ignorer le commentaire sur le _xmlrpc_fckng_fix qui ne concerne que l'api xmlrpc et non l'api rest

Offline

#8 2019-02-15 17:56:44

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

Merci pour cette réponse qui fait renaître l'espoir :-)

De mon côté, je fais du Powershell (c'est le seul language de scripting que je connais).
J'ai fait un petit module qui permet d'utiliser des fonctions de base.

Entre autre, la fonction "add-glpitiem"

Function Add-GlpiItem {
    param($ItemType,$Details,$Creds)
    $AppURL =    $Creds.AppURL
    $UserToken = $Creds.UserToken
    $AppToken =  $Creds.AppToken
    # Details are expected to be an object. 
    # You can create it with 
    # $Details = @{
    # name="PC99999"
    # serial="01.02.03.04.05"
    # }

    $Details = @{input=$Details}
    $SessionToken = Get-GLPISessionToken
    $json = ConvertTo-Json $Details
    $AddResult = Invoke-RestMethod "$AppURL/$($ItemType)" -Method Post -Headers @{"session-token"=$SessionToken.session_token; "App-Token" = "$AppToken"} -Body $json -ContentType 'application/json'
    Invoke-RestMethod "$AppURL/killSession" -Headers @{"session-token"=$SessionToken.session_token; "App-Token" = "$AppToken"}
    return $AddResult
}

Pour l'utiliser, j'ai quelque chose comme :

$NetworkPortDetails = @{
                items_id="340"
                itemtype="Phone"
                name="LAN"
                entities_id="0"
                is_recursive="0"
                logical_number="1"
                instantiation_type="NetworkPortEthernet"
                NetworkName_name="plop"
                NetworkName_fqdns_id="0"
                NetworkName_ipaddresses = {"10.117.18.127"}
                _create_children = "true"
                }
Add-GlpiItem -ItemType Networkport -Creds $GlpiCreds -Details $NetworkPortDetails

Ca ne produit pas d'erreur, le port est créé, mais je n'ai pas l'IP.
Le NetworkName est bien là avec son nom, mais pas l'IP.

Je pense que ça vient du fait que ipaddress doit être un array. Je me trompe?

Offline

#9 2019-02-15 18:00:06

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

Tiens, au fait...
Quand je récupère l'objet NetworkPort, je n'ai pas les IP qui existeraient. Je m'y prends comme un manche? (C'est fort probable...)

Offline

#10 2019-02-15 18:02:53

orthagh
Administrator
From: TECLIB - CAEN
Registered: 2010-11-30
Posts: 662
Website

Re: Ajout d'un port réseau sur un device

Attention NetworkName__ipaddresses contient 2 _ !

Offline

#11 2019-02-15 18:05:25

orthagh
Administrator
From: TECLIB - CAEN
Registered: 2010-11-30
Posts: 662
Website

Re: Ajout d'un port réseau sur un device

autre chose, il est impératif d'avoir la clef -1 en face de l'ip, c'est un peu complexe, mais pour expliquer vite, le framework de glpi ne fait les ajouts que sur les clefs negatives.
Cf : https://github.com/glpi-project/glpi/bl … #L259-L271

Offline

#12 2019-02-18 14:28:00

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

Merci!..
Je suis parvenu à un résultat :-)

Je savais que j'étais tout proche.

Je suppose que la clé négative permet l'ajout à n+1 pour ne pas avoir de doublon. En revanche, je présume que je peux éditer une entrée en utilisant le bon ID. Je vais tester.

Offline

#13 2019-02-18 14:54:13

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

Bon...
Je sais maintenant écrire mais je ne parviens pas à lire la(les) IP(s).
Je récupère le port réseau

id                 : 737386
items_id           : 340
itemtype           : Phone
entities_id        : 0
is_recursive       : 0
logical_number     : 0
name               : LAN
instantiation_type : NetworkPortEthernet
mac                : 48:7a:55:01:88:d0
comment            : 
is_deleted         : 0
is_dynamic         : 0
date_mod           : 2019-01-21 11:28:45
date_creation      : 2019-01-21 11:28:45
links              : {@{rel=Phone; href=https://glpi.****.**/apirest.php/Phone/340}, @{rel=Entity; href=https://glpi.****.**/apirest.php/Entity/0}}

Mais je ne sais pas comment arriver aux Network Names.

Offline

#14 2019-02-18 16:52:37

orthagh
Administrator
From: TECLIB - CAEN
Registered: 2010-11-30
Posts: 662
Website

Re: Ajout d'un port réseau sur un device

alors vraiment de tête, j'ai pas le code sous les yeux, ca devrait etre

apirest.php/NetworkName/:id/IPAddress

ou

apirest.php/NetworkName/:id/IPAddress_IPNetwork

à tester.

Offline

#15 2019-02-18 17:55:11

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

Merci!

Je confirme que c'est bien apirest.php/NetworkName/:id/IPAddress :-)

En principe, c'est ma dernière question.
Je ne parviens pas à faire un update du port réseau pour ajouter l'IP.
Je sais ajouter un nouveau port avec l'IP et la mac mais je ne sais pas ajouter l'IP si la mac existe déjà.

Je fais un

$NetworkPortDetails = @{
                            id="$NetworkPort.id"
                            NetworkName_fqdns_id="0"
                            NetworkName__ipaddresses = @{"-1"="$IP"}
                            }
                        Update-GlpiItem -ItemType Networkport -Creds $GlpiCreds -Details $NetworkPortDetails

Je me sens vraiment con avec ce problème.
Depuis des mois, je manipule GLPI depuis mon module powershell avec un certain succès et ces foutues adresses IP me résistent.

Offline

#16 2019-02-19 10:06:49

orthagh
Administrator
From: TECLIB - CAEN
Registered: 2010-11-30
Posts: 662
Website

Re: Ajout d'un port réseau sur un device

Si avez déjà un NetworkName pour votre équipement,

il faut POST une ipadress directement avec ces params
- itemtype = NetworkName
- items_id = id du network name
- name = l'ip

Offline

#17 2019-02-19 10:38:39

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

Merci encore pour le soutien et la patience!!

Je sens que je touche au but. Il doit encore me manquer un tout petit bout...

Si je fais

$IPDetails = @{
    name="1.2.3.4"
    itemtype="NetworkName"
    items_id="737386"
    }
Add-GlpiItem -ItemType ipaddress -Creds $GlpiCreds -Details $IPDetails 

Ca me retourne

Invoke-RestMethod : ["ERROR_GLPI_ADD","You don't have permission to perform this action."]

En gros, le même genre de message que j'avais au tout début.
Je suis retourné lire ce qui avait été changé pour résoudre le souci de création de port à l'origine de mon topic mais je ne sais pas ce qui manque ici :-/

Offline

#18 2019-02-19 10:51:21

orthagh
Administrator
From: TECLIB - CAEN
Registered: 2010-11-30
Posts: 662
Website

Re: Ajout d'un port réseau sur un device

-ItemType IPAddress

désolé j'ai écris mon message surement trop vite

Offline

#19 2019-02-19 11:31:15

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

J'ai toujours le même problème de ["ERROR_GLPI_ADD","You don't have permission to perform this action."] malgré le changement de ItemType.

Désolé pour tout ça, je me rends bien compte que c'est casse-pied.
J'ai l'impression que la méthode pour lire, modifier, effacer ou ajouter un adresse IP ne suit pas du tout les habitudes d'usage de l'API.
Et puisque mes compétence en développement sont nulles, je n'ai pas la possibilité de me plonger dans le code pour savoir comment retrouver les infos dont j'ai besoin. C'est hyper frustrant :-(

Offline

#20 2019-02-20 12:20:26

orthagh
Administrator
From: TECLIB - CAEN
Registered: 2010-11-30
Posts: 662
Website

Re: Ajout d'un port réseau sur un device

J'ai toujours le même problème de ["ERROR_GLPI_ADD","You don't have permission to perform this action."] malgré le changement de ItemType.

Autre solution, faire un update (PUT) du network port et de la même façon que lors de l'ajout de ce dernier, ajouter un array NetworkName__ipaddresses avec un [-1 => ip] dedans


J'ai l'impression que la méthode pour lire, modifier, effacer ou ajouter un adresse IP ne suit pas du tout les habitudes d'usage de l'API.

C'est tout a fait le cas et absolument pas lié à l'API, c'est aussi le cas dans le cœur que cette partie soit pénible à utiliser.

Offline

#21 2019-02-22 11:56:26

JesseWells
Member
Registered: 2019-02-20
Posts: 1

Re: Ajout d'un port réseau sur un device

Thank you for sharing your experience guys this helps a lots. keep it up

Offline

#22 2019-02-27 19:24:04

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

orthagh wrote:

J'ai toujours le même problème de ["ERROR_GLPI_ADD","You don't have permission to perform this action."] malgré le changement de ItemType.

Autre solution, faire un update (PUT) du network port et de la même façon que lors de l'ajout de ce dernier, ajouter un array NetworkName__ipaddresses avec un [-1 => ip] dedans

Juste pour info, cette méthode ne fonctionne pas.
Pas de message d'erreur. Le nom du network name est bien ajouté, mais pas l'IP.

Offline

#23 2019-04-09 15:50:27

Jean-Christophe
Moderator
Registered: 2007-08-22
Posts: 734

Re: Ajout d'un port réseau sur un device

J'ai compris!..

Je n'ai pas encore de solution, mais je viens de me rendre compte que la gestion est différente entre les device réseaux et les téléphones!!

Pour les devices réseaux, c'est
Device
  └ Network Name(s)

Pour les phones, c'est
Phone
  └ Network Port(s)
       └Network Name(s)

Du coup, toute notre discussion prend un autre sens.
Franchement, c'est chiantissime.

Offline

#24 2020-02-13 19:47:33

J-Marc
Member
Registered: 2020-02-13
Posts: 2

Re: Ajout d'un port réseau sur un device

Bonjour,

Je remonte un peu ce sujet...
Avez-vous réussi à mettre à jour l'adresse IP d'un équipement avec l'API ?

Je bloque également sur ce point depuis quelques temps maintenant.
La gestion réseau est quand même extrêmement complexe comparé au vielle version (multiple table,...).

J'arrive bien à ajouter une IP ou la mettre à jour dans la partie NetworkName mais impossible de faire la liaison avec un équipement...

Si vous avez réussi, je suis preneur de votre solution... (j'en suis au point de vouloir passer par des requêtes SQL, au moins on peut récupérer les infos via le mode debug).

Bonne soirée,

Offline

#25 2020-02-14 10:41:39

orthagh
Administrator
From: TECLIB - CAEN
Registered: 2010-11-30
Posts: 662
Website

Re: Ajout d'un port réseau sur un device

Bonjour.

Comme indiqué en haut, la suite de tests unitaires de l'api contiennent un test concernant l'ajout de port réseaux à un ordinateur.
CF: https://github.com/glpi-project/glpi/bl … #L538-L565

Offline

Board footer

Powered by FluxBB