Get mac address from Mikrotik CAPsMAN Registration Table is no comment. TO Access List

Script :

Get mac address  from CAPsMAN Registration Table is no comment. compare with dhcp server leases mac and add active host name, address list and comment to access list in CAPsMAN.

NOW We know who connect on CAPsMAN.

{
/caps-man registration-table {
:local SSID;:local MAC; :local AP
:foreach rule in=[print detail as-value where (!comment~””)\
# :foreach rule in=[print detail as-value where (comment~”LAO”)\
# interface=”AP_EE”
] do={\
# :put $rule
:set AP “”; :set MAC “”; :set SSID “”
:local num 0
:foreach item in=$rule do={
:if ($num = 2) do={ :set AP $item }
:if ($num = 3) do={ :set MAC $item }
:if ($num = 4) do={ :set SSID $item }
:set num ($num + 1)
}
:local HOSTNAME [ /ip dhcp-server lease get [/ip dhcp-server lease find mac-address=$MAC ] host-name ]
:local ADDRLIST [ /ip dhcp-server lease get [/ip dhcp-server lease find mac-address=$MAC ] address-lists ]
:local COMMENTHOST [ /ip dhcp-server lease get [/ip dhcp-server lease find mac-address=$MAC ] comment ]
:put ($HOSTNAME . $ADDRLIST . “, ” . $COMMENTHOST)

:put ($AP .” ” . $MAC . ” ” . $SSID)
/caps-man access-list {
add mac-address=$MAC action=accept comment=($HOSTNAME . $ADDRLIST . “, ” . $COMMENTHOST) disabled=yes
move [find mac-address=$MAC] destination=1
}
:delay delay-time=10ms
}
}
}

2 Comments

  1. I’ve got capsman running, and this script looks exactly like what I want, but I cannot figure out how to run it.

    Tried adding new script to /system/scripts using webfig. saved it as “capsman-id”, but I cannot see anything happening when I run it except for the “run counter” increasing by 1 for each run.

    Giving read/write permissions didn’t help.

    Nothing in the logs.

    Please advice!

    Thank you 🙂

    Reply

  2. Got an error when running from terminal:

    /system script> print
    Flags: I – invalid
    0 name=”capsman-id” owner=”admin” policy=read,write last-started=oct/27/2017 23:49:02 run-count=4 source=
    {
    /caps-man registration-table {
    :local SSID;:local MAC; :local AP
    :foreach rule in=[print detail as-value where (!comment~\1D\1D)\
    ] do={\
    :set AP \1C\1D; :set MAC \1C\1D; :set SSID \1C\1D
    :local num 0
    :foreach item in=$rule do={
    :if ($num = 2) do={ :set AP $item }
    :if ($num = 3) do={ :set MAC $item }
    :if ($num = 4) do={ :set SSID $item }
    :set num ($num + 1)
    }
    :local HOSTNAME [ /ip dhcp-server lease get [/ip dhcp-server lease find mac-address=$MAC ] host-name ]
    :local ADDRLIST [ /ip dhcp-server lease get [/ip dhcp-server lease find mac-address=$MAC ] address-lists ]
    :local COMMENTHOST [ /ip dhcp-server lease get [/ip dhcp-server lease find mac-address=$MAC ] comment ]
    :put ($HOSTNAME . $ADDRLIST . \1C, \1D . $COMMENTHOST)
    :put ($AP .\1D \1D . $MAC . \1D \1D . $SSID)
    /caps-man access-list {
    add mac-address=$MAC action=accept comment=($HOSTNAME . $ADDRLIST . \1C, \1D . $COMMENTHOST) disabled=yes
    move [find mac-address=$MAC] destination=1
    }
    :delay delay-time=10ms
    }
    }
    }

    /system script> run capsman-id
    syntax error (line 4 column 57)

    Reply

Leave a comment