Indeed, you are best to know what you want in your reports.
With WAPT you can write your own SQL queries in the WAPT Console, or you can download ready-to-run queries from Internet.
You can get the latest db structure diagram from the package tis-db-structure-diagram-wapt. Once the package is installed, you will find different formats of the diagram in C:/ProgramFiles(x64)/waptdbdiagram (Windows) or /opt/wapt/dbdiagram (Linux, MacOS).
To rename a query, select the query and press the F2 key.
In the top banner, you can write your SQL query.
To edit / modify / save your reports:
The Refresh button is used to reload queries saved on the WAPT Server, for example, if a colleague has just edited a new query.
The New query button adds a new blank query to the list.
The Delete query button deletes the selected query from the WAPT Server.
The Save queries button saves the query on the WAPT Server.
The Execute button executes the selected query.
The Export to spreadsheet button exports the result of your query to a spreadsheet.
The button is enabled only in edit mode.
The Duplicate button duplicates an existing query to avoid writing a SQL query from scratch.
The button is enabled only in edit mode.
You have several options available when you right click on a query.
Options available for a SQL query report in the WAPT Console¶
List of actions available on a selection of query on WAPT Console¶
Name
Description
Execute
Executes the SQL query.
Edit
Edits the SQL query.
Edit Name
Edits the name of the SQL query.
Export to spreadsheet
Exports the result of the SQL query to a csv formatted file.
Duplicate
Duplicates the SQL query.
Export queries to file…
Exports the selected SQL queries to a file.
This method allows to share or backup the SQL queries.
Import queries…
Imports queries from a file.
Delete queries
Deletes the selected queries.
Note
SQL queries are saved in the PostgreSQL WAPT database.
Using CTRL+space allows to build queries more effectively as it will auto-complete some fields.
10.3. Using queries as a filter in the inventory tab¶
You can create a filter for use in the Inventory tab based on a SQL query.
You need to add an UUID column, is absolutely necessary in the query results.
In this exemple, we use a query which lists hosts onto which the 7zip software has been installed.
Hint
This method is powerful because it allows to seach search for software that have not been installed using WAPT.
Do a right-click on the query result and click on the Choose as Host UUID button.
On the query result, right-click on host_id, which is a unique identifier, select this entry and click on the Choose as Host UUID button.
Querying on host UUID to create a dynamic view in the inventory tab¶
When done, save the query by pressing the Save query button then go to the Main Inventory tab.
Then, enable the Advanced Search panel and select the query in the drop-down field Filter hosts on SQL query.
You will then see a host list based on the selected query.
Note
It is also possible to click on the “Show selected machines in inventory” button by right-clicking after selecting one or more machines appearing in the result of your query.
Prior to this, it is necessary to click on “Choose as hosts UUID”.
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
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
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
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
Feel free to post your own queries on the forum with an explanation of what your query does, ideally with a screen capture or a table showing a sample of your query result.
Sometimes, the version of the software or its architecture are an integral part of the software name.
When the software titles register with the WAPT Server inventory, they appear as different software titles whereas they are just one software for us humans.
To solve this problem, the name of software titles can be standardized in WAPT.
Go to the Softwares Inventory tab.
Normalizing the name of software titles in the WAPT Console¶
Click Normalize Software Names in the Tools menu.
Select the software titles whose names to standardize, for example, all different versions of Adobe Flash Player.
On the column normalized, press F2 to assign a standardized name to the selected software titles.
Finally press Enter to save the changes.
Note
To select several software titles, select them with the shift-up/down key combination.
You can also indicate a software like windows update or banned (press spacebar in the corresponding column).
Press on the Save Modifications button to upload the changes onto the WAPT Server.
You can now run queries using this standardized name.
Hint
The Show host checkbox allows to see the software titles that are installed on the hosts.
Showing hosts with selected software in the Software Inventory tab¶
10.5.1. Using normalized software titles as a filter in the inventory tab¶
You can create a filter in the Main Inventory tab that uses the normalized software title names.
To do so, normalize the software title names in Software Inventory then select one or several hosts.
In the Software inventory tab of the selected hosts, drag and drop the software in the inventory list, it will create a view.
This method is powerful because it allows to seach search for software titles that have not been installed using WAPT.
Do not forget to normalize software titles beforehand.
Adding a normalized software title name to the software inventory for the selected hosts¶
Hint
You can also use the Show Hosts Softwares, you will see a host list sorted according to the normalized software title name.
Modify pg_hba.conf of the PostgreSQL version in use.
In /etc/postgresql/15/main/pg_hba.conf for Debian and /var/lib/pgsql/15/data/pg_hba.conf for RedHat and derivatives, add the IP address of the PostgreSQL client under # IPv4 local connections section.
host wapt all 192.168.0.65/32 md5where 192.168.0.65 is your IP address that is authorizedto connect to the WAPT database.
Allow PostgreSQL to listen on every interface in /etc/postgresql/15/main/postgresql.conf for Debian and /var/lib/pgsql/15/data/postgresql.conf for RedHat and derivatives, section Connection Settings.
listen_addresses='*'
Restart the service for your PostgreSQL version.
systemctlrestartpostgresql@12-main.service
Connect to PostgreSQL on the WAPT Server.
sudo-upostgrespsqlwapt
Then give a password to the wapt user.
wapt=#ALTERUSERwaptWITHPASSWORD'PASSWORD';
Note
To create a user with read-only access to the database, follow this procedure: