Community/Bildung/FF@home/70 Leases in postgresql bzw. kea ermitteln

Leases in der postgresql-Tabelle kea ermitteln

Kea schreibt die Leases je Domäne in eine postgresql-Tabelle mit dem Namen kea. Diese können insgesamt oder je Domäne ausgelesen werden, um festzustellen, ob die Anzahl der möglichen Leases je Domäne ausreicht.

Vorgehen

Aufruf der postgresql-Datenbank mit der Tabelle kea_leases und dem User kea auf dtm1:

$ sudo -u postgres /usr/lib/postgresql/9.5/bin/psql kea_leases kea -h "127.0.0.1" -W  

Das Passwort steht in kea.conf.

Aufruf der postgresql-Datenbank mit der Tabelle kea_leases und dem User kea auf dus0x für posrgresql Version 17:

$ sudo -u postgres /usr/lib/postgresql/17/bin/psql kea_leases _kea -h "127.0.0.1" -W 

Hier muss der User _kea verwendet werden! Das Passwort seht in kea-dhcp4.conf.
Es erscheint der postgresql-Prompt:

kea_leases=> 

Abfragen:

select hwaddr, valid_lifetime, expire, subnet_id, hostname, address/256/256/256 as ip1, address/256/256%256 as ip2, address/256%256 as ip3, address%256 as ip4 from lease4 where fqdn_fwd = true and subnet_id=2 order by expire desc;

Ergebnis: alle aktiven Geräte aus Domäne 2 mit ip als Dezimalzahl, wobei IP2 die Domäne anzeigt, hier 2.

select * from lease4 where subnet_id=2 and fqdn_fwd=true order by expire DESC;

Ergebnis: alle aktiven Geräte aus Domäne 2 mit fqdn_fwd=true, nach Alter absteigend sortiert

ohne subnet_id=2:

select * from lease4 where and fqdn_fwd=true order by expire DESC;

Ergebnis: alle Geräte aus Domäne 2, auch die nicht verbundenen Geräte, nach Alter absteigend sortiert.
Die nicht mehr aktiven Geräte werden für 3 Monate gespeichert.

Mögliche Spalten der Tabelle lease4 in postgresql:

SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'lease4';

Ergebnis:

|  column_name   |        data_type |        
| -------------- | ---------------- |  
| address        | bigint |  
| hwaddr         | bytea |  
client_id      | bytea  
valid_lifetime | bigint  
expire         | timestamp with time zone  
subnet_id      | bigint  
fqdn_fwd       | boolean  
fqdn_rev       | boolean  
hostname       | character varying  
state          | bigint  

(10 rows)
Tabelle muss noch greichtet werden.

Anzahl der leases ermitteln für Domäne 2:

select count(*) from lease4 where subnet_id=2; 
count 
-------
2342
(1 row)

Alle leases über alle Domänen:

select subnet_id, count(*) from lease4 group by subnet_id order by subnet_id;