You are not logged in.
Pages: 1
Bonjour,
je cherche à attribuer de façon automatique le lieu d'un asset inventorié lors d'une découverte/inventaire basé sur une plage IP ; ce sont des imprimantes.
J'ai 6 plages différentes pour 6 lieux différents. (10.35.XX.(0 à 50))
J'ai donc créée une regle qui se base sur l'IP avec un regexp, mais si ce regexp fonctionne sur les sites de vérification (regex101 notamment), cela ne passe plus sous GLPI/Fusion.
Ce qui, vous l'avouerez, n'est pas le plus pratique puisque GLPI n'apporte (encore une fois) aucune aide.
Je cherche donc à attribuer un lieu si mon matos inventorié se trouve dans la plage 10.35.10. (0 à 50), j'ai essayé différentes règles qui marchaient partiellement (seuls les nombres étaient pris en compte, pas les chiffres) ; celle-ci étant sensé tout prendre correctement :
/10.35.10.[0-9]{1}$|[1-4]{1}[0-9]{1}$|50/
Si vous avez trouvé une solution chez vous, je suis preneur
Merci à vous et excellente journée
Manger un castor, c'est sauver un arbre.
Quand on est mort, on ne sait pas qu'on est mort ; c'est pour les autres que c'est difficile. Quand on est con, c'est pareil !
Offline
Ce sont des réseaux différents ?
Ou c'est un seul réseau plat et attribution des IP en fonction des lieux est manuelle ?
Il y a quoi après l'IP .50 ?
Ce qui me chiffonne, c'est que 50, ça ne correspond à rien dans la définition des réseaux...
64, OK, mais 50 ??
Offline
j'ai 6 plages différents : 10.35.10.0 à 10.35.10.50 correspond au lieu A
10.35.20.0 à 10.35.20.50 correspond au lieu B
10.35.30.0 à 10.35.30.50 correspond au lieu C
etc
Ou c'est un seul réseau plat et attribution des IP en fonction des lieux est manuelle ?
Je ne comprends pas la question (on est que mardi matin en mars aussi ... je sors de mon hibernation)
Manger un castor, c'est sauver un arbre.
Quand on est mort, on ne sait pas qu'on est mort ; c'est pour les autres que c'est difficile. Quand on est con, c'est pareil !
Offline
Une plage réseau est toujours définie par le masque de sous-réseau appliqué.
Ici, je suppose que les machines ont un masque de sous-réseau en 255.255.255.192 et donc, ça couvre 64 IP de x.y.z.0 à x.y.z.63
Il n'est techniquement pas possible de faire des plages d'IP limitées à 50 adresses.
Du coup, la règle pourrait être
IP Address Is CIDR 10.35.10.0/26
10.35.10.0/26 couvre de 10.35.10.0 -> 10.35.10.63
Je t'invite à faire un tour ici : https://www.site24x7.com/tools/ipv4-sub … lator.html
Tu pourrais faire les essais de notation et de taille de sous-réseau.
PS : CIDR veut dire Classless Inter-Domain Routing. C'est une manière de noter un réseau et sa taille (mais ce n'est pas la seule).
Offline
Je vais regarder ça , merci
Manger un castor, c'est sauver un arbre.
Quand on est mort, on ne sait pas qu'on est mort ; c'est pour les autres que c'est difficile. Quand on est con, c'est pareil !
Offline
Bonjour,
J'utilise GLPI 9.5.4 avec FusionInventory 9.5+3.0 sous Debian (dans AWS) et je fais face au meme probleme avec des regles de lieux qui ne fonctionnent pas.
Pour vous donnez un peu de contexte, nous avons les memes noms de serveurs dans une centaine de datacenters a travers le monde et voudrions pouvoir assigner automatiquement le lieu correct via une regle FusionInventory.
Deux parametres peuvent me permettre de determiner le lieu:
1) Soit le FQDN (ie SRVXX.PAYSYY.NOM_DE_DOMAINE.COM) ou le nom de domaine (ie PAYSYY.NOM_DE_DOMAINE.COM)
2) Soit la plage reseau (Le serveur est connecte a plusieurs reseaux, un ou deux reseaux prives et un public. Il 'sagit ici du sous-reseau IP publique)
J'ai essaye de creer 4 regles pour detecter le lieux mais aucune ne semble etre prise en compte or lorsque je teste ces regles directement dans la regle toutes fonctionnent:
1) Domain contains PAYSYY.NOM_DE_DOMAINE.COM
2) Domain contains PAYSYY
3) Address IP is CIDR 180.XX.YY.80/28
4) Subnet is not CIDR 180.XX.YY.80/255.255.255.240
J'ai verifie le fichier XML remonte a GLPI par FusionInventory:
1) Mon domaine est bien present dans les proprietes <WORKGROUP/>, <FQDN/> et <DEVICEID/>
2) Le sous reseau est bien present dans la propriete <IPSUBNET/> mais pas avec la notation CIDR, juste sous la forme X.X.X.X, le masque de sous reseau est lui bien present dans la propriete <IPMASK> au sein de la meme propriete <NETWORKS/>. A noter qu'il existe 11 cartes reseaux (dont une virtuelle pour du bonding), je ne suis pas sur que cela soit la source du probleme.
Est-ce qu'il existe un moyen de savoir quelles regles FusionInventory sont appliquees lors de l'import d'un nouvel element? Est-ce qu'il existe un fichier de log ou un mode verbose pour debugger le moteur de regles?
Merci pour votre aide,
Last edited by FredoSG (2021-04-13 08:49:05)
Offline
Si la machine a plusieurs IP, je ne sais pas comment c'est géré pour les règles. Je n'ai jamais creusé jusque là.
Par contre, sur base du nom de domaine, ça devrait passer.
En testant la règle (en lui donnant le nom de domaine "à la main"), est-ce que c'est correctement interprété ?
Offline
Bonjour Jean Christophe,
Oui en testant la regle a la main via la fonction "Test" cela fonctionne bien, ma regle est validee.
En analysant le fichier de log disponible sous /var/www/html/glpi/files/_log/php-errors.log j'ai constate l'erreur suivante:
[2021-04-13 04:23:48] glpiphplog.CRITICAL: *** Uncaught Exception ArithmeticError: Bit shift by negative number in /var/www/html/glpi/plugins/fusioninventory/inc/inventoryrulelocation.class.php at line 364
Backtrace :
inc/rule.class.php:1526 PluginFusioninventoryInventoryRuleLocation->checkCriteria()
inc/rule.class.php:1417 Rule->checkCriterias()
inc/rulecollection.class.php:1437 Rule->process()
plugins/fusioninventory/inc/toolbox.class.php:814 RuleCollection->processAllRules()
...ry/inc/inventorycomputerinventory.class.php:330 PluginFusioninventoryToolbox::addLocation()
...ry/inc/inventorycomputerinventory.class.php:102 PluginFusioninventoryInventoryComputerInventory->sendCriteria()
...fusioninventory/inc/communication.class.php:227 PluginFusioninventoryInventoryComputerInventory->import()
...fusioninventory/inc/communication.class.php:461 PluginFusioninventoryCommunication->import()
plugins/fusioninventory/front/communication.php:92 PluginFusioninventoryCommunication->handleOCSCommunication()
plugins/fusioninventory/index.php:59 include_once()
J'ai donc supprime toutes les regles et recree la regle suivante, avec plus de criteres (en utilisant l'operateur logique OR)
Address IP is CIDR 180.XX.YY.80/28
Subnet is CIDR 180.XX.YY.80/28
Domain contains xx
Je n'ai plus d'erreurs dans les logs mais cela ne fonctionne toujours pas lorsque la machine est importe.
L'import se passe bien, mais le lieu n'est pas applique.
Paradoxalement ma regle de dictionnaire pour classifier le modele de serveur fonctionne sans probleme.
Je ne suis pas sur de savoir ce qui ne fonctionne pas, avez-vous des pistes? Est-ce qu'il existe d'autres fichiers de logs plus detailles qui montrerait comment les regles sont appliquees?
Merci a vous,
Last edited by FredoSG (2021-04-13 12:42:01)
Offline
Bonjour,
J'ai continue mes tests. J'ai pu confirmer que le moteur de regle fonctionnait correctement.
J'ai teste la regle avec le nom du serveur et le lieu a ete attribue sans probleme.
J'ai ensuite teste avec une des addresses IP locale (Address IP is CIDR192.168.0.0/24) et cela a tres bien fonctionne.
Ceci prouve que l'adresse IP publique n'est pas recuperee par GLPI (par contre elle se trouve bien dans le fichier XML remonte par FI). Est-ce que GLPI limite le nombre d'IP qu'il recupere de la part de FI?
J'ai teste d'autres regles avec le domaine mais quelquesoit la partie du fqdn utilisee, la regle est totalement ignoree.
Selon vous est-ce que le probleme vient de Fusion Inventory ou est ce que cela vient de GLPI?
Merci pour votre aide,
Last edited by FredoSG (2021-04-14 09:15:27)
Offline
Bonjour,
Comme le domaine et le reseau IP publique n'etaient pas detecte via les regles de lieu, nous avons decide d'utilise les tags comme solution de contournement.
Cote serveur (CentOS 7)
Dans /etc/fusioninventory/agent.cfg
tag=LOCATION=XXYY
Dans GLPI, creer une regle avec les parametres suivants:
Critere: FusionInventory tag regular expression matches /LOCATION\=Votre Expression Reguliere/
Action: Location Assign the value from regular expression #0
Cette regle permet de creer automatiquement le lieu specifie via le tag pour chaque serveur.
Qui dois-je contacter pour signaler ce bug de champs non detecte?
Merci a vous,
Last edited by FredoSG (2021-04-16 04:33:13)
Offline
Bonjour,
Apres avoir lu le code source, un de mes collegues a constate les points suivants:
- Le domaine est bien detecte lorsqu'on utilise les regles d'entites (contrairement au regles de lieu)
- Le domaine est donc bien reconnu lorsque les regles d'entites sont interpretees.
- Au moment ou les regles de lieu sont interepretees, le domaine n'est pas assigne. Est-ce qu'il y a une raison particuliere pour cela?
En parallele pour aider ceux qui font face au meme probleme, il existe deux solutions de contournements aux regles de lieu lorsque l'on veux assigner un lieu par rapport au nom de domaine:
1) Utiliser un tag (comme je l'ai mentionne dans mon precedent post)
2) Utiliser les regles d'entites a la place (avec lesquels il est egalement possible d'assigner un lieu).
Merci,
Last edited by FredoSG (2021-04-16 05:51:22)
Offline
Pages: 1