--- format: markdown ... # 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 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 # 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) # 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;