GLPI/SQL

Révision datée du 21 août 2024 à 11:52 par Fylip22 (discussion | contributions) (Page créée avec « {{Sommaire}} 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... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

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;
Les status d'un ticket
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;
Les status d'une tâche
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;
Les types d'action (linked_action)
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 );

Voir aussi