Hide navigation sidebar
Hide table of contents sidebar
Skip to content
Quickstart Official documentation Setuphelpers Changelog FAQ
Back to top
View this page
Toggle table of contents sidebar

# 9. Utiliser la fonctions de requête dans WAPT

## 9.1. Principe de fonctionnement

WAPT Enterprise offre des fonctionnalités de reporting avancées.

En effet, qui mieux que vous pouvez savoir ce dont vous avez besoin dans votre rapport.

Avec WAPT nous vous proposons d’écrire vos requêtes SQL dont le résultat s’affichera dans la Console WAPT.

Vous pouvez obtenir le dernier diagramme de structure de la base de données à partir du paquet tis-db-structure-diagram-wapt. Une fois le paquet installé, vous trouverez différents formats du diagramme dans `C:/Program Files (x64)/waptdbdiagram` (Windows) ou `/opt/wapt/dbdiagram` (Linux, MacOS).

## 9.2. Concepteur de requêtes WAPT

Le concepteur de requêtes vous offre la possibilité de modifier vos propres requêtes sur la base de données PostgreSQL de WAPT.

Note

La base de données PostgreSQL est définie en mode Lecture seule, de sorte que les requêtes exécutées à partir du Report Designer qui tentent de mettre à jour, de supprimer ou d’insérer des données échouent.

Vous pouvez importer des requêtes SQL depuis le dépôt Tranquil IT en cliquant sur Reporting ‣ Importer des requêtes… ‣ Depuis une Url ou sur Reporting ‣ Importer des requêtes… ‣ Depuis un fichier.

Importer une requête SQL dans la Console WAPT

Si vous choisissez d’importer une requête depuis le dépôt Tranquil IT, sélectionnez une ou plusieurs requêtes, puis cliquez sur Sauvegarder les requêtes sélectionnées. Les nouvelles requêtes apparaîtront dans la Console WAPT.

Importer une requête SQL dans la Console WAPT depuis une URL

Si vous importez une requête depuis un fichier, sélectionnez votre requête dans l’explorateur de fichiers. La requête peut être un fichier au format .query ou .json.

Importer une requête SQL dans la Console WAPT à partir d’un fichier

Note

Quelle que soit la méthode que vous utilisez pour importer des requêtes, n’oubliez pas de cliquer sur le bouton Sauvegarder pour sauvegarder les requêtes importées.

Pour créer une nouvelle requête, cliquer sur Reporting ‣ Mode conception ‣ Nouvelle requête.

Conception d’un rapport de requête SQL dans la Console WAPT

Indication

- Pour renommer une requête, appuyer sur la touche `F2`.

- Dans l’encadré du haut, vous pouvez écrire votre requête SQL.

Pour éditer / modifier / Sauvegarder vos requêtes :

- Le bouton Recharger est utilisé pour recharger les requêtes sauvegardées sur le serveur, par exemple, si un collègue vient juste d’éditer une nouvelle requête.

- Le bouton Nouvelle requête va ajouter une requête vide à la liste.

- Le bouton Supprimer la requête va supprimer la requête sélectionnée sur le Serveur WAPT.

- Le bouton Enregistrer tout va sauvegarder votre requête au Serveur WAPT.

- Le bouton Exécuter va exécuter la requête sélectionnée.

- Le bouton Exporter vers tableur va exporter le résultat de votre requête dans un feuille de calcul.

- Le bouton Dupliquer va dupliquer une requête existante pour éviter de repartir d’une requête vide.

Vous disposez de plusieurs options lorsque vous cliquez avec le bouton droit de la souris sur une requête.

Options disponibles pour un rapport de requête SQL dans la Console WAPT

Liste des actions disponibles sur une sélection de requête dans la Console WAPT
Nom | Description
--- | ---
Exécuter | Exécute la requête SQL.
Éditer | Modifie la requête SQL.
Éditer le nom | Modifie le nom de la requête SQL.
Exporter vers un tableur | Exporte le résultat de la requête SQL vers un fichier formaté en csv.
Dupliquer | Duplique la requête SQL.
Exporter les requêtes vers un fichier… | Exporte les requêtes SQL sélectionnées vers un fichier. Cette méthode permet de partager ou de sauvegarder les requêtes SQL.
Importer des requêtes… | Importe des requêtes à partir d’un fichier.
Supprimer des requêtes | Supprime les requêtes sélectionnées.

Note

- Les requêtes sont sauvegardées dans la base de données PostgreSQL WAPT.

- Le raccourci `CTRL`+`espace` vous permet de construire votre requête de façon plus efficace.

## 9.3. Utiliser des requêtes comme filtre dans l’onglet inventaire

Vous pouvez créer un filtre dans l’onglet Inventaire basé sur une requête SQL. You devez ajouter une colonne UUID pour pouvoir utiliser le filtre dans l’onglet Inventaire.

Dans cet exemple, nous utilisons une requête qui liste les machines sur lesquelles le logiciel 7zip a été installé.

Indication

Cette méthode est puissante car elle permet de rechercher des logiciels qui n’ont pas été installés à l’aide de WAPT.

Sur le résultat de la requête, faites un clic droit sur host_id, qui est un identifiant unique, sélectionner cette entrée et cliquer sur le bouton Choisir comme Host UUID.

Filtrer sur l’UUID de la machine pour créer une vue dynamique dans l’onglet d’inventaire

Lorsque vous avez terminé, enregistrer la requête en appuyant sur le bouton Sauvegarder puis aller dans l’onglet Inventaire.

Ensuite, activer le panneau Recherche avancée et sélectionner la requête dans le champ déroulant Filtrer les machines basé sur la requête SQL.

Filtrer l’inventaire des machines à l’aide d’une requête SQL

Vous verrez alors une liste de machines basée sur la requête sélectionnée.

Note

Il est également possible de cliquer sur le bouton « Afficher les machines sélectionnées dans l’inventaire » en faisant un clic droit après avoir sélectionné une ou plusieurs machines apparaissant dans le résultat de votre requête.

Auparavant , il est nécessaire de cliquer sur « Choisir comme UUID de l’hôte ».

## 9.4. Exemple de requêtes

### 9.4.1. Requêtes Ordinateur

    select count(*) as "number_of_hosts" from hosts

    select
    computer_name,
    os_name,
    os_version,
    os_architecture,
    serialnr
    from hosts
    order by 4,3,1

    select distinct unnest(mac_addresses) as mac,
    unnest(h.connected_ips) as ipaddress,
    computer_fqdn,h.description,
    h.manufacturer||' '||h.productname as model,
    h.serialnr,
    h.computer_type
    from hosts h
    order by 1,2,3

    select
    host_info->'windows_version' as windows_version,
    os_name as operating_system,
    count(os_name) as nb_hosts
    from hosts
    group by 1,2

    select host_info->'windows_version' as windows_version,
    os_name as "Operating_System",
    count(os_name) as "number_of_hosts"
    from hosts
    group by 1,2

    select
    h.uuid,
    h.computer_fqdn,
    install_date::date,
    version,
    h.last_seen_on::timestamp,
    h.connected_users from hostsoftwares s
    left join hosts h on h.uuid=s.host_id
    where s.key='WAPT_is1'
    and h.last_seen_on<'20190115'

    select case
    dmi->'Chassis_Information'->>'Type'
    when 'Portable' then '01-Laptop'
    when 'Notebook' then '01-Laptop'
    when 'Laptop' then '01-Laptop'
    when 'Desktop' then '02-Desktop'
    when 'Tower' then '02-Desktop'
    when 'Mini Tower' then '02-Desktop'
    else '99-'||(dmi->'Chassis_Information'->>'Type')
    end as type_chassis,
    string_agg(distinct coalesce(manufacturer,'?') ||' '|| coalesce(productname,''),', '),
    count(*) as "number_of_hosts" from hosts
    group by 1

    select
    computer_name,
    os_name,
    os_version,
    host_info->'windows_product_infos'->'product_key' as windows_product_key
    from hosts
    order by 3,1

### 9.4.2. Requête WAPT

    select
    package,
    version,
    architecture,
    description,
    section,
    package_uuid,
    count(*)
    from packages
    group by 1,2,3,4,5,6

    select
    computer_fqdn,
    host_status,
    last_seen_on::date,
    h.wapt_status,
    string_agg(distinct lower(s.package),' ')
    from hosts h
    left join hostpackagesstatus s on s.host_id=h.uuid and s.install_status != 'OK'
    where (last_seen_on::date > (current_timestamp - interval '1 week')::date
    and host_status!='OK')
    group by 1,2,3,4

### 9.4.3. Requête Paquets

    select
    package,
    version,
    architecture,
    description,
    section,
    package_uuid,
    count(*)
    from hostpackagesstatus s
    where section not in ('host','unit','group')
    group by 1,2,3,4,5,6

### 9.4.4. Requête logiciel

    select
    h.uuid,
    h.computer_name,
    install_date::date,
    version,
    h.listening_timestamp::timestamp,
    name
    from hostsoftwares s
    left join hosts h on h.uuid=s.host_id
    where
    s.key='WAPT_is1'
    and (name ilike 'WAPT%%Discovery%%' or name ilike 'WAPT %%')

    select
    hosts.computer_name,
    hostsoftwares.host_id,
    hostsoftwares.name,
    hostsoftwares.version
    from hosts, hostsoftwares
    where hostsoftwares.name ilike '7-zip%%'
    and hosts.uuid=hostsoftwares.host_id
    order by hosts.computer_name asc

    select
    n.normalized_name,
    s.version,string_agg(distinct lower(h.computer_name),' '),
    count(distinct h.uuid)
    from hostsoftwares s
    left join normalization n on (n.original_name = s.name) and (n.key = s.key)
    left join hosts h on h.uuid = s.host_id
    where (n.normalized_name is not null)
    and (n.normalized_name<>'')
    and not n.windows_update
    and not n.banned
    and (last_seen_on::date > (current_timestamp - interval '3 week')::date)
    group by 1,2

    select
    n.normalized_name,
    string_agg(distinct lower(h.computer_name),' '),
    count(distinct h.uuid)
    from hostsoftwares s
    left join normalization n on (n.original_name = s.name) and (n.key = s.key)
    left join hosts h on h.uuid = s.host_id
    where (n.normalized_name is not null)
    and (n.normalized_name<>'')
    and not n.windows_update
    and not n.banned
    and (last_seen_on::date > (current_timestamp - interval '3 week')::date)
    group by 1

Vous pouvez aussi trouver plus d’exemple de requêtes sur le Forum Tranquil IT.

N’hésitez pas à partager vos requêtes sur le même forum avec une explication de ce que fais votre requête, idéalement avec une capture d’écran ou une table affichant un échantillon du résultat de votre requête.

## 9.5. Normaliser les noms de logiciels

Parfois, la version du logiciel ou son architecture fait partie intégrante du nom du logiciel. Quand le logiciel s’enregistre dans l’inventaire du Serveur WAPT, il apparaît en différents logiciels alors qu’ils sont pareils pour nous humains.

Pour résoudre ce problème, le nom des logiciels peut être normalisé dans WAPT. Aller dans l’onglet Inventaire des logiciels.

Normaliser le nom du logiciel dans la Console WAPT

- Cliquez sur Normaliser les nom de logiciels dans le menu Outils.

- Sélectionnez le logiciel à standardiser, par exemple, toutes les version différentes d’Adobe Flash player.

- Sur la colonne Normalisé, appuyez sur `F2` pour assigner un nom standard sur le logiciel sélectionné. Puis appuyez sur `Entrée`.

Note

- Pour sélectionner plusieurs programmes, sélectionnez les avec les combinaisons de touches `shift`-`up/down`.

- Vous pouvez aussi marquer un logiciel comme Mise à jour Windows ou Banni (Appuyez sur `la` `barre` `espace` dans la colonne correspondante).

- Appuyer sur le bouton Sauvegarder pour charger les changements sur le Serveur WAPT.

Vous pouvez maintenant lancer vos requêtes avec ce nom standardisé.

Indication

La case à cocher Afficher les machines permet de voir les titres des logiciels qui sont installés sur les machines.

Liste des machines avec le logiciel sélectionné dans l’onglet Inventaire des logiciels

### 9.5.1. Utiliser des titres de logiciels normalisés comme filtre dans l’onglet inventaire

Vous pouvez créer un filtre dans l’onglet Inventaire qui utilise des noms de logiciels normalisés. Pour ce faire, normaliser les noms des logiciels dans Inventaire des logiciels puis sélectionner une ou plusieurs machines. Dans l’onglet Inventaire des logiciels des machines sélectionnées, glissez et déposez le logiciel dans la liste d’inventaire, cela créera une vue.

Indication

Cette méthode est puissante car elle permet de rechercher des logiciels qui n’ont pas été installés à l’aide de WAPT.

Ne pas oublier de normaliser les noms des logiciels au préalable.

Normaliser les noms de logiciels

Ajouter un nom normalisé de logiciel à l’inventaire des logiciels pour les machines sélectionnées

Vous verrez une liste de machines triées selon le nom normalisé du logiciel.

## 9.6. Se connecter à la base de données WAPT avec un client PostgreSQL

Vous pouvez connecter votre base de données WAPT à un client si vous préférez utiliser un client PostgreSQL.

Pour ce faire, vous allez devoir changer quelques fichiers de configuration sur votre Serveur WAPT.

- Tout d’abord, trouvez la version de votre base de données PostgreSQL.

    ps -ef | grep -i sql
    postgres   512     1  0 Jan05 ?        00:00:24 /usr/lib/postgresql/15/bin/postgres -D /var/lib/postgresql/15/main -c config_file=/etc/postgresql/15/main/postgresql.conf

- Modifiez `pg_hba.conf` de la version PostgreSQL utilisée. Dans `/etc/postgresql/15/main/pg_hba.conf` pour Debian et `/var/lib/pgsql/15/data/pg_hba.conf` pour RedHat et dérivées # IPv4 local connections section, ajoutez votre adresse.

    host    wapt             all             192.168.0.65/32              md5

    where 192.168.0.65 is your IP address that is authorized
    to connect to the WAPT database.

- Autorisez PostgreSQL à écouter sur toutes les interfaces dans `/etc/postgresql/15/main/postgresql.conf` pour Debian et `/var/lib/pgsql/15/data/postgresql.conf` pour RedHat et dérivées, section Connection Settings.

    listen_addresses = '*'

- Redémarrez le service pour votre version de PostgreSQL.

    systemctl restart postgresql@12-main.service

- Pour se connecter au PostgreSQL sur le Serveur WAPT.

    sudo -u postgres psql wapt

- Donnez ensuite un mot de passe à l’utilisateur wapt.

    wapt=# ALTER USER wapt WITH PASSWORD 'PASSWORD';