GLPI/SQL
Il est possible d'intervenir directement sur les données de GLPI pour des actions en masse, telles que des mises à jours ou des purges de données.
Attention, ce type d'opération peut endommager la base de données. S'assurer de l'action a effectuer.
Il s'agit d'exécuter une commande SQL depuis l'outil d'administration PhpMyAdmin ou HeidiSQL.
Ordinateur et adresse IP et adresse MAC
Pour obtenir l'adresse IP et l'adresse MAC des ordinateurs ; avec suppression des doublons avec l'option GROUP BY :
SELECT c.name, ip.name, np.name, np.mac FROM glpi_computers AS c, glpi_networkports AS np, glpi_networknames AS nn, glpi_ipaddresses AS ip WHERE np.itemtype = 'Computer' AND np.items_id = c.id AND nn.itemtype = 'NetworkPort' AND nn.items_id = np.id AND ip.itemtype = 'NetworkName' AND ip.items_id = nn.id AND c.is_template = 0 AND c.is_deleted = 0 GROUP BY np.mac;
Ticket
Sélection du ticket numéro 3000 :
SELECT * FROM `glpi_tickets` where id=3000;
Libellé du statut | Code du statut |
---|---|
Nouveau | 1 |
En cours (attribué) | 2 |
En cours (planifié) | 3 |
En attente | 4 |
Résolu | 5 |
Clos | 6 |
Tâche
Liste des tâches d'un ticket en particulier (ici ticket numéro 5951) :
SELECT * FROM glpi.glpi_tickettasks where tickets_id=5951;
Libellé du statut | Code du statut |
---|---|
Information | 0 |
À faire | 1 |
Fait | 2 |
Suppression de l'historique
Chaque action sur une fiche (ordinateur, imprimante, ticket...) est historisé.
Commande à lancer pour supprimer les historiques créés par l'utilisateur Plugin_FusionInventory et correspondant à l'ordinateur numéro 309 :
DELETE FROM glpi.glpi_logs WHERE (itemtype='Computer' AND items_id=309 AND user_name='Plugin_FusionInventory (255)');
Autoincrémentation, initialisation
Pour initialiser l'indice de la clé primaire (id) à 3000.
ALTER TABLE glpi_phones AUTO_INCREMENT=3000;
Champs supplémentaires
Mise à jour en masse ; modification de la valeur des champs à la valeur "x" :
UPDATE glpi.glpi_plugin_fields_computerinfosuppcs SET glpi.glpi_plugin_fields_computerinfosuppcs.bitlockeridentificateurfield = "x", glpi.glpi_plugin_fields_computerinfosuppcs.bitlockerclefderecuperationfield = "x", glpi.glpi_plugin_fields_computerinfosuppcs.teamvieweridentifiantfield = "x", glpi.glpi_plugin_fields_computerinfosuppcs.teamviewermotdepassefield = "x" where itemtype="computer";
MySQL, script
Exemples de script de sauvegarde :
mysqldump --databases --add-drop-database --opt -u root -pMDP glpi > glpi-20190214-1412.sql
mysqldump --databases --add-drop-database --opt -u root -p glpi0905 >glpi0905-$(date +"%Y%m%d").sql gzip glpi0905-$(date +"%Y%m%d").sql
Journal
Sélection des éléments du journal en fonction du numéro de ticket :
SELECT * FROM glpi_logs WHERE itemtype = "Ticket" and items_id=1234;
Code de l'action | Signification |
---|---|
0 | Changement (statut, acteur...) |
13 | Suppression de l'élément |
15 | Ajout d'un acteur ou d'un élément lié (ordinateur...) |
16 | Ajout d'un lien acteur |
17 | Ajout d'une tâche ou d'un suivi |
18 | Modification d'une tâche ou d'un suivi |
20 | Délai de prise en compte |
Gestion
Liste des informations de gestion financière pour les éléments de parc de type ordinateur (Computer) :
SELECT * FROM glpi.glpi_infocoms WHERE itemtype = "Computer"
Migration de données
SELECT id, NAME, entities_id, auths_id, is_active FROM glpi_users WHERE is_active=1 ORDER BY entities_id, name;
Optimisation du contenu des tickets (ticket, tâche, suivi, solution)
Lors de la rédaction des sauts de ligne superflu apparaissent.
Le script suivant supprimer les sauts de lignes inutiles pour un numéro de ticket en particulier :
/* suppression des paragraphes vides */ SET @TicketNumero = 1234; SET @TexteARechercher = "<p>.</p>"; SET @TexteARechercherRegex = CONCAT( "(", @TexteARechercher, ")" ) ; /* ticket, description, suppression des paragraphes vides */ UPDATE glpi_tickets SET content = REGEXP_REPLACE(content, @TexteARechercherRegex, '') WHERE id = @TicketNumero; /* ticket, tâche, suppression des paragraphes vides */ UPDATE glpi_tickettasks SET content = REGEXP_REPLACE(content, @TexteARechercherRegex, '') WHERE tickets_id = @TicketNumero; /* ticket, suivi, suppression des paragraphes vides */ UPDATE glpi_itilfollowups SET content = REGEXP_REPLACE(content, @TexteARechercherRegex, '') WHERE items_id = @TicketNumero; /* ticket, solution, suppression des paragraphes vides */ UPDATE glpi_itilsolutions SET content = REGEXP_REPLACE(content, @TexteARechercherRegex, '') WHERE items_id = @TicketNumero;
Le script suivant remplace une chaine de caractère par une autre sur tous les tickets qui remplissent la condition :
# pour le remplacement d'une chaine de caractère par une autre # SET @TexteATrouver = 'phpnet1/konoinfo/'; # SET @TexteDeRemplacement = 'phpweb1/konoinfo/'; # pour optimiser le contenu des tickets ; ici en supprimant les paragraphes vides SET @TexteATrouver = '(<p>.</p>)'; SET @TexteDeRemplacement = ''; /* ticket, description, suppression des paragraphes vides */ UPDATE glpi_tickets SET content = REGEXP_REPLACE(content, @TexteATrouver, @TexteDeRemplacement) WHERE id IN ( SELECT id WHERE content REGEXP @TexteATrouver ); /* ticket, tâche, suppression des paragraphes vides */ UPDATE glpi_tickettasks SET content = REGEXP_REPLACE(content, @TexteATrouver, @TexteDeRemplacement) WHERE tickets_id IN ( SELECT id WHERE content REGEXP @TexteATrouver ); /* ticket, suivi, suppression des paragraphes vides */ UPDATE glpi_itilfollowups SET content = REGEXP_REPLACE(content, @TexteATrouver, @TexteDeRemplacement) WHERE items_id IN ( SELECT id WHERE content REGEXP @TexteATrouver ); /* ticket, solution, suppression des paragraphes vides */ UPDATE glpi_itilsolutions SET content = REGEXP_REPLACE(content, @TexteATrouver, @TexteDeRemplacement) WHERE items_id IN ( SELECT id WHERE content REGEXP @TexteATrouver );