collect-wireless-mac: always select first lease from dhcp-server

The script fails at setting the hostname when there are multiple leases
for a mac address.

In line 36 and 37 the hostname gets set from the data the lease. When there
is more than one lease for a specific mac address this fails with the message
"invalid internal item number". More than one lease for a mac address is
possible, if you have more than one SSID on a capsman and a single device
can login into more than one SSID.

Fixes #10

Signed-off-by: Christian Hesse <mail@eworm.de>
This commit is contained in:
Daniel Ziegenberg 2020-12-30 12:38:10 +01:00 committed by Christian Hesse
parent 97ade535d9
commit ca6668950b
3 changed files with 3 additions and 3 deletions

View File

@ -31,7 +31,7 @@ $ScriptLock "collect-wireless-mac.capsman";
:local Address "no dhcp lease";
:local DnsName "no dhcp lease";
:local HostName "no dhcp lease";
:local Lease [ / ip dhcp-server lease find where mac-address=$Mac dynamic=yes status=bound ];
:local Lease ([ / ip dhcp-server lease find where mac-address=$Mac dynamic=yes status=bound ]->0);
:if ([ :len $Lease ] > 0) do={
:set Address [ / ip dhcp-server lease get $Lease address ];
:set HostName [ / ip dhcp-server lease get $Lease host-name ];

View File

@ -31,7 +31,7 @@ $ScriptLock "collect-wireless-mac.local";
:local Address "no dhcp lease";
:local DnsName "no dhcp lease";
:local HostName "no dhcp lease";
:local Lease [ / ip dhcp-server lease find where mac-address=$Mac dynamic=yes status=bound ];
:local Lease ([ / ip dhcp-server lease find where mac-address=$Mac dynamic=yes status=bound ]->0);
:if ([ :len $Lease ] > 0) do={
:set Address [ / ip dhcp-server lease get $Lease address ];
:set HostName [ / ip dhcp-server lease get $Lease host-name ];

View File

@ -32,7 +32,7 @@ $ScriptLock "collect-wireless-mac%TEMPL%";
:local Address "no dhcp lease";
:local DnsName "no dhcp lease";
:local HostName "no dhcp lease";
:local Lease [ / ip dhcp-server lease find where mac-address=$Mac dynamic=yes status=bound ];
:local Lease ([ / ip dhcp-server lease find where mac-address=$Mac dynamic=yes status=bound ]->0);
:if ([ :len $Lease ] > 0) do={
:set Address [ / ip dhcp-server lease get $Lease address ];
:set HostName [ / ip dhcp-server lease get $Lease host-name ];