<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа) форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 31 Jul 2026 04:11:52 -0400</pubDate>
		<item>
			<title>Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425702">Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			У кого-нибудь есть изменённый скрипт для нового CAPSMAN, например, для hAP AX2, где CAPSMAN находится в /interface/wifi/registration-table? <br />
			<i>14.01.2025 22:02:00, marcin685.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425702</link>
			<guid>http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425702</guid>
			<pubDate>Tue, 14 Jan 2025 22:02:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425701">Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Привет, где будут показывать эту информацию? <br />
			<i>03.05.2024 06:20:00, 4L3xN3t.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425701</link>
			<guid>http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425701</guid>
			<pubDate>Fri, 03 May 2024 06:20:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425700">Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Проверьте на ошибки и немного оптимизируйте... Вот скрипт:<br /><br />:global fill do={<br /> &nbsp; &nbsp;:local STR &nbsp;$1<br /> &nbsp; &nbsp;:local LEN &nbsp;$2<br /> &nbsp; &nbsp;:local CHAR $3<br /> &nbsp; &nbsp;:if ([:len $STR] &gt;= $LEN) do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:set STR "$[:pick $STR 0 ($LEN-1)]$CHAR"<br /> &nbsp; &nbsp;} else={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:for i from=1 to=($LEN-[:len $STR]) step=1 do={<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:set STR "$STR$CHAR"<br /> &nbsp; &nbsp; &nbsp; &nbsp;}<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;:return $STR<br />}<br /><br />:put "$[$fill "MAC" 19 " "]$[$fill "IP" 17 " "]$[$fill "Client" 12 " "]$[$fill "AP" 10 " "]$[$fill "Signal" 7 " "]$[$fill "SSID" 18 " "]$[$fill "TX Rate" 11 " "]$[$fill "RX Rate" 11 " "]$[$fill "Uptime" 14 " "]$[$fill "Bytes" 21 " "]$[$fill "Packets" 15 " "]Interface"<br />/caps-man registration-table<br />:foreach i in=[find] do={<br /> &nbsp; &nbsp;:local locMAC &nbsp; &nbsp;[get $i mac-address]<br /> &nbsp; &nbsp;:local locInt &nbsp; &nbsp;[get $i interface]<br /> &nbsp; &nbsp;:local locSSID &nbsp; [get $i ssid]<br /> &nbsp; &nbsp;:local locSignal [get $i rx-signal]<br /> &nbsp; &nbsp;:local loctxRate [get $i tx-rate]<br /> &nbsp; &nbsp;:if ([:find $loctxRate "-" -1] &gt; 0) do={:set loctxRate [:pick $loctxRate 0 [:find $loctxRate "-" -1]]}<br /> &nbsp; &nbsp;:local locrxRate [get $i rx-rate]<br /> &nbsp; &nbsp;:if ([:find $locrxRate "-" -1] &gt; 0) do={:set locrxRate [:pick $locrxRate 0 [:find $locrxRate "-" -1]]}<br /> &nbsp; &nbsp;:local locUptime [get $i uptime]<br /> &nbsp; &nbsp;:set &nbsp; locUptime [:pick $locUptime 0 [:find $locUptime "." -1]]<br /> &nbsp; &nbsp;:local locBytes &nbsp;[get $i bytes]<br /> &nbsp; &nbsp;:local locPack &nbsp; [get $i packets]<br /> &nbsp; &nbsp;/caps-man interface<br /> &nbsp; &nbsp;:local locMasterInt [get [find where name=$locInt] master-interface]<br /> &nbsp; &nbsp;:local locRadioMAC &nbsp;"00:00:00:00:00:00"<br /> &nbsp; &nbsp;:if ($locMasterInt = "none") do={:set locRadioMAC [get [find where name=$locInt] radio-mac]} else={:set locRadioMAC [get [find where name=$locMasterInt] radio-mac]}<br /> &nbsp; &nbsp;:local locCAP ""<br /> &nbsp; &nbsp;/caps-man radio<br /> &nbsp; &nbsp;:do {:set locCAP [get [find where radio-mac=$locRadioMAC] remote-cap-identity]} on-error={:put "ERROR - $locMAC - $locRadioMAC"}<br /> &nbsp; &nbsp;:local locIP &nbsp; "noDHCP"<br /> &nbsp; &nbsp;:local locName "noDHCP"<br /> &nbsp; &nbsp;/ip dhcp-server lease<br /> &nbsp; &nbsp;:if ([find where mac-address=$locMAC]) do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:do {:set locIP &nbsp; [get [find where mac-address=$locMAC] address  ]} on-error={:set locIP   "DCHP-Err"; :put "ERROR with $locMAC - Please check DHCP for duplicate entries"}<br /> &nbsp; &nbsp; &nbsp; &nbsp;:do {:set locName [get [find where mac-address=$locMAC] host-name]} on-error={:set locName "DHCP-Err"}<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;:if ($locSignal &lt;= -70) do={:terminal style varname} else={:terminal style none}<br /> &nbsp; &nbsp;:put "$[$fill $locMAC 19 " "]$[$fill $locIP 17 " "]$[$fill $locName 12 " "]$[$fill $locCAP 10 " "]$[$fill $locSignal 7 " "]$[$fill $locSSID 18 " "]$[$fill $loctxRate 11 " "]$[$fill $locrxRate 11 " "]$[$fill $locUptime 14 " "]$[$fill $locBytes 21 " "]$[$fill $locPack 15 " "]$locInt"<br />} <br />
			<i>13.02.2023 16:55:00, rextended.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425700</link>
			<guid>http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425700</guid>
			<pubDate>Mon, 13 Feb 2023 16:55:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425699">Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Привет! Я обновил скрипт, чтобы он ловил ошибки с дублирующимися записями DHCP. &nbsp;<br /># Скрипт wlan — выводит список WLAN-клиентов с DHCP-именами и уровнем сигнала, собранным из 4 таблиц (caps-man registration-table, caps-man interface, caps-man radio, ip dhcp-server lease) &nbsp;<br /># v1.0 BV 2021-10-01 — первая версия &nbsp;<br /># v2.0 BV 2021-12-02 — если сигнал равен или меньше -70дБ, строка выводится красным (плохой сигнал) &nbsp;<br /># v2.1 BV 2022-03-03 — исправлена ошибка со Slave интерфейсами (надо смотреть Radio MAC главного интерфейса); добавлен SSID &nbsp;<br /># v2.2 BV 2022-03-28 — исправлена ошибка с дублирующимися записями в DHCP &nbsp;<br /># v2.3 BV 2022-12-13 — подгонка ширины колонок (AP, SSID, Bytes, Packets)<br /><br />:global fill do={ &nbsp;<br /> &nbsp; &nbsp;# эта функция дополняет строку символом до нужной длины — используется для табличного вида данных &nbsp;<br /> &nbsp; &nbsp;# 3 параметра: &nbsp;<br /> &nbsp; &nbsp;# &nbsp; &nbsp;#1 строка для заполнения &nbsp;<br /> &nbsp; &nbsp;# &nbsp; &nbsp;#2 длина, до которой надо дополнить (или обрезать) &nbsp;<br /> &nbsp; &nbsp;# &nbsp; &nbsp;#3 символ для заполнения (или разделитель при обрезке) &nbsp;<br /> &nbsp; &nbsp;# если длина строки больше или равна length-1, строка обрезается до length-1 и к ней добавляется 1 символ-разделитель &nbsp;<br /> &nbsp; &nbsp;:local STR $1; &nbsp;<br /> &nbsp; &nbsp;:local LEN $2; &nbsp;<br /> &nbsp; &nbsp;:local CHAR $3; &nbsp;<br /> &nbsp; &nbsp;:if ([:len $STR] &gt;= $LEN) do={  <br /> &nbsp; &nbsp; &nbsp; &nbsp;# строку надо обрезать &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;:set STR ([:pick $STR 0 ($LEN-1)].$CHAR);  <br /> &nbsp; &nbsp;} else { &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;# строку надо дополнить до нужной длины &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;:for i from=1 to=($LEN-[:len $STR]) step=1 do={  <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:set STR ("$STR" . $CHAR); &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp;<br /> &nbsp; &nbsp;} &nbsp;<br /> &nbsp; &nbsp;:return $STR; &nbsp;<br />} &nbsp;<br />:put ([$fill "MAC" 19 " "].[$fill "IP" 17 " "].[$fill "Client" 12 " "].[$fill "AP" 10 " "].[$fill "Signal" 7 " "].[$fill "SSID" 18 " "].[$fill "TX Rate" 11 " "].[$fill "RX Rate" 11 " "].[$fill "Uptime" 14 " "].[$fill "Bytes" 21 " "].[$fill "Packets" 15 " "]."Interface");  <br />:foreach i in=[/caps-man registration-table find .id] do={  <br /> &nbsp; &nbsp;:local locMAC &nbsp; &nbsp;[/caps-man registration-table get $i mac-address];  <br /> &nbsp; &nbsp;:local locInt &nbsp; &nbsp;[/caps-man registration-table get $i interface];  <br /> &nbsp; &nbsp;:local locSSID &nbsp; [/caps-man registration-table get $i ssid];  <br /> &nbsp; &nbsp;:local locSignal [/caps-man registration-table get $i rx-signal];  <br /> &nbsp; &nbsp;:local loctxRate [/caps-man registration-table get $i tx-rate];  <br /> &nbsp; &nbsp;# сокращаем до нужных данных: "173.3Mbps-20MHz/2S/SGI" --&gt; "173.3Mbps" &nbsp;<br /> &nbsp; &nbsp;:if ([:find $loctxRate "-" -1] &gt; 0) do={ :set loctxRate [:pick $loctxRate 0 [:find $loctxRate "-" -1]];}  <br /> &nbsp; &nbsp;:local locrxRate [/caps-man registration-table get $i rx-rate];  <br /> &nbsp; &nbsp;:if ([:find $locrxRate "-" -1] &gt; 0) do={ :set locrxRate [:pick $locrxRate 0 [:find $locrxRate "-" -1]];}  <br /> &nbsp; &nbsp;:local locUptime [/caps-man registration-table get $i uptime];  <br /> &nbsp; &nbsp;:set locUptime &nbsp; &nbsp;[:pick $locUptime 0 [:find $locUptime "." -1]];  <br /> &nbsp; &nbsp;:local locBytes &nbsp;[/caps-man registration-table get $i bytes];  <br /> &nbsp; &nbsp;:local locPack &nbsp; &nbsp;[/caps-man registration-table get $i packets];  <br /> &nbsp; &nbsp;# если мы на Slave интерфейсе, нужно взять Radio MAC главного интерфейса &nbsp;<br /> &nbsp; &nbsp;:local locMasterInt [/caps-man interface get [/caps-man interface find name=$locInt] master-interface];  <br /> &nbsp; &nbsp;:local locRadioMAC; &nbsp;<br /> &nbsp; &nbsp;:if ($locMasterInt = "none") do={set locRadioMAC [/caps-man interface get [/caps-man interface find name=$locInt] radio-mac]} else={set locRadioMAC [/caps-man interface get [/caps-man interface find name=$locMasterInt] radio-mac]}  <br /> &nbsp; &nbsp;:local locCAP; &nbsp;<br /> &nbsp; &nbsp;:do {set $locCAP &nbsp;[/caps-man radio get [/caps-man radio find radio-mac=$locRadioMAC] remote-cap-identity]} on-error={:put ("ERROR - ".$locMAC." - ".$locRadioMAC)};  <br /> &nbsp; &nbsp;# получаем IP и имя с DHCP сервера (если есть) &nbsp;<br /> &nbsp; &nbsp;:local locIP; &nbsp;<br /> &nbsp; &nbsp;:local locName; &nbsp;<br /> &nbsp; &nbsp;:if ([/ip dhcp-server lease find mac-address=$locMAC]) do={  <br /> &nbsp; &nbsp; &nbsp; &nbsp;:do {set $locIP &nbsp; [/ip dhcp-server lease get [/ip dhcp-server lease find mac-address=$locMAC] address]}   on-error={set $locIP "DCHP-Err"; put ("ERROR with ".$locMAC." - Please check DHCP for duplicate entries")};  <br /> &nbsp; &nbsp; &nbsp; &nbsp;:do {set $locName [/ip dhcp-server lease get [/ip dhcp-server lease find mac-address=$locMAC] host-name]} on-error={set $locName "DHCP-Err"};  <br /> &nbsp; &nbsp;} else={ &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;set $locIP "noDHCP"; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;set $locName "noDHCP"; &nbsp;<br /> &nbsp; &nbsp;} &nbsp;<br /> &nbsp; &nbsp;:if ($locSignal &lt;= -70) do={ &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;# плохой сигнал – выводим строку красным &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;:terminal style varname; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;:put ([$fill $locMAC 19 " "].[$fill $locIP 17 " "].[$fill $locName 12 " "].[$fill $locCAP 10 " "].[$fill $locSignal 7 " "].[$fill $locSSID 18 " "].[$fill $loctxRate 11 " "].[$fill $locrxRate 11 " "].[$fill $locUptime 14 " "].[$fill $locBytes 21 " "].[$fill $locPack 15 " "].$locInt);  <br /> &nbsp; &nbsp; &nbsp; &nbsp;:terminal style none; &nbsp;<br /> &nbsp; &nbsp;} else={ &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;:put ([$fill $locMAC 19 " "].[$fill $locIP 17 " "].[$fill $locName 12 " "].[$fill $locCAP 10 " "].[$fill $locSignal 7 " "].[$fill $locSSID 18 " "].[$fill $loctxRate 11 " "].[$fill $locrxRate 11 " "].[$fill $locUptime 14 " "].[$fill $locBytes 21 " "].[$fill $locPack 15 " "].$locInt);  <br /> &nbsp; &nbsp;} &nbsp;<br />} <br />
			<i>13.02.2023 13:33:00, Bernhard.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425699</link>
			<guid>http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425699</guid>
			<pubDate>Mon, 13 Feb 2023 13:33:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425698">Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Привет! Я обновил свой скрипт, теперь он умеет показывать SSID и клиентов на Slave-интерфейсах. Если сигнал ниже -70дБ, строка выводится красным. Также поймал несколько ошибок, которые раньше останавливали скрипт. Вот как это сейчас выглядит:<br /><br />MAC &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Client &nbsp; &nbsp; &nbsp;AP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Signal SSID &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TX Rate &nbsp; &nbsp;RX Rate &nbsp; &nbsp;Uptime &nbsp; &nbsp; &nbsp; &nbsp;Bytes &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Packets &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Interface &nbsp;<br />98:3B:8F:8B:27:E3 &nbsp;10.22.32.208 &nbsp; &nbsp; Client01 &nbsp; &nbsp;AP01_Floor1 &nbsp; &nbsp; -55 &nbsp; &nbsp;WLAN_Office &nbsp; &nbsp; &nbsp; &nbsp;173.3Mbps &nbsp;173.3Mbps &nbsp;3d08:14:50 &nbsp; &nbsp;2079611693,36712726 5218249,3579269 &nbsp; &nbsp; cap56 &nbsp;<br />E6:B0:C2:D6:D5:73 &nbsp;10.22.32.218 &nbsp; &nbsp; Client05 &nbsp; &nbsp;AP06_Floor4 &nbsp; &nbsp; -68 &nbsp; &nbsp;WLAN_Guest &nbsp; &nbsp; &nbsp; &nbsp; 173.3Mbps &nbsp;78Mbps &nbsp; &nbsp; 2d03:50:14 &nbsp; &nbsp;15286043,30608002 &nbsp; 46680,45932 &nbsp; &nbsp; &nbsp; &nbsp; cap68 &nbsp;<br /><br />Вот сам скрипт: &nbsp;<br /># Скрипт wlan - выводит список WLAN-клиентов с DHCP-именами и уровнем сигнала, собранных из 4 таблиц (caps-man registration-table, caps-man interface, caps-man radio, ip dhcp-server lease) &nbsp;<br /># v1.0 BV 2021-10-01 - первая версия &nbsp;<br /># v2.0 BV 2021-12-02 - при сигнале равном или ниже -70дБ строка выводится красным (плохой сигнал) &nbsp;<br /># v2.1 BV 2022-03-03 - исправлена ошибка со Slave-интерфейсами (надо смотреть Radio MAC главного интерфейса); добавлен SSID &nbsp;<br /><br />:global fill do={ &nbsp;<br /> &nbsp; &nbsp;# Эта функция заполняет строку символами до нужной длины — используется для табличного вывода &nbsp;<br /> &nbsp; &nbsp;# 3 параметра: &nbsp;<br /> &nbsp; &nbsp;# &nbsp; &nbsp;#1 строка для заполнения &nbsp;<br /> &nbsp; &nbsp;# &nbsp; &nbsp;#2 длина, до которой нужно заполнить (или обрезать) &nbsp;<br /> &nbsp; &nbsp;# &nbsp; &nbsp;#3 символ для заполнения (или в качестве разделителя при обрезке) &nbsp;<br /> &nbsp; &nbsp;# Если длина строки больше или равна параметру длины, строка обрезается до длины минус один, и добавляется символ-разделитель &nbsp;<br /> &nbsp; &nbsp;:local STR $1; &nbsp;<br /> &nbsp; &nbsp;:local LEN $2; &nbsp;<br /> &nbsp; &nbsp;:local CHAR $3; &nbsp;<br /> &nbsp; &nbsp;:if ([:len $STR] &gt;= $LEN) do={  <br /> &nbsp; &nbsp; &nbsp; &nbsp;# строка обрезается &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;:set STR ([:pick $STR 0 ($LEN-1)].$CHAR);  <br /> &nbsp; &nbsp;} else { &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;# заполняем строку до нужной длины &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;:for i from=1 to=($LEN-[:len $STR]) step=1 do={  <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:set STR ("$STR" . $CHAR); &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp;<br /> &nbsp; &nbsp;} &nbsp;<br /> &nbsp; &nbsp;:return $STR; &nbsp;<br />} &nbsp;<br /><br />:put ([$fill "MAC" 19 " "].[$fill "IP" 17 " "].[$fill "Client" 12 " "].[$fill "AP" 16 " "].[$fill "Signal" 7 " "].[$fill "SSID" 19 " "].[$fill "TX Rate" 11 " "].[$fill "RX Rate" 11 " "].[$fill "Uptime" 14 " "].[$fill "Bytes" 20 " "].[$fill "Packets" 20 " "]."Interface");  <br />:foreach i in=[/caps-man registration-table find .id] do={  <br /> &nbsp; &nbsp;:local locMAC &nbsp; &nbsp;[/caps-man registration-table get $i mac-address];  <br /> &nbsp; &nbsp;:local locInt &nbsp; &nbsp;[/caps-man registration-table get $i interface];  <br /> &nbsp; &nbsp;:local locSSID &nbsp; [/caps-man registration-table get $i ssid];  <br /> &nbsp; &nbsp;:local locSignal [/caps-man registration-table get $i rx-signal];  <br /> &nbsp; &nbsp;:local loctxRate [/caps-man registration-table get $i tx-rate];  <br /> &nbsp; &nbsp;# сокращаем до нужных данных: "173.3Mbps-20MHz/2S/SGI" --&gt; "173.3Mbps" &nbsp;<br /> &nbsp; &nbsp;:if ([:find $loctxRate "-" -1] &gt; 0) do={ :set loctxRate [:pick $loctxRate 0 [:find $loctxRate "-" -1]];}  <br /> &nbsp; &nbsp;:local locrxRate [/caps-man registration-table get $i rx-rate];  <br /> &nbsp; &nbsp;:if ([:find $locrxRate "-" -1] &gt; 0) do={ :set locrxRate [:pick $locrxRate 0 [:find $locrxRate "-" -1]];}  <br /> &nbsp; &nbsp;:local locUptime [/caps-man registration-table get $i uptime];  <br /> &nbsp; &nbsp;:set locUptime &nbsp; &nbsp;[:pick $locUptime 0 [:find $locUptime "." -1]];  <br /> &nbsp; &nbsp;:local locBytes &nbsp;[/caps-man registration-table get $i bytes];  <br /> &nbsp; &nbsp;:local locPack &nbsp; &nbsp;[/caps-man registration-table get $i packets];  <br /> &nbsp; &nbsp;# если это Slave-интерфейс, нужно взять Radio MAC главного интерфейса &nbsp;<br /> &nbsp; &nbsp;:local locMasterInt [/caps-man interface get [/caps-man interface find name=$locInt] master-interface];  <br /> &nbsp; &nbsp;:local locRadioMAC; &nbsp;<br /> &nbsp; &nbsp;:if ($locMasterInt = "none") do={set locRadioMAC [/caps-man interface get [/caps-man interface find name=$locInt] radio-mac]} else={set locRadioMAC [/caps-man interface get [/caps-man interface find name=$locMasterInt] radio-mac]}  <br /> &nbsp; &nbsp;:local locCAP; &nbsp;<br /> &nbsp; &nbsp;:do {set $locCAP &nbsp;[/caps-man radio get [/caps-man radio find radio-mac=$locRadioMAC] remote-cap-identity]} on-error={:put ("ERROR - ".$locMAC." - ".$locCAPMAC)};  <br /> &nbsp; &nbsp;# получаем IP и имя из DHCP-сервера (если есть) &nbsp;<br /> &nbsp; &nbsp;:local locIP; &nbsp;<br /> &nbsp; &nbsp;:local locName; &nbsp;<br /> &nbsp; &nbsp;:if ([/ip dhcp-server lease find mac-address=$locMAC]) do={  <br /> &nbsp; &nbsp; &nbsp; &nbsp;set $locIP &nbsp; &nbsp; &nbsp;[/ip dhcp-server lease get [/ip dhcp-server lease find mac-address=$locMAC] address];  <br /> &nbsp; &nbsp; &nbsp; &nbsp;set $locName &nbsp; &nbsp;[/ip dhcp-server lease get [/ip dhcp-server lease find mac-address=$locMAC] host-name];  <br /> &nbsp; &nbsp;} else={ &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;set $locIP "noIP"; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;set $locName "noName"; &nbsp;<br /> &nbsp; &nbsp;} &nbsp;<br /> &nbsp; &nbsp;:if ($locSignal &lt;= -70) do={ &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;# плохой сигнал — выводим строку красным &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;:terminal style varname; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;:put ([$fill $locMAC 19 " "].[$fill $locIP 17 " "].[$fill $locName 12 " "].[$fill $locCAP 16 " "].[$fill $locSignal 7 " "].[$fill $locSSID 19 " "].[$fill $loctxRate 11 " "].[$fill $locrxRate 11 " "].[$fill $locUptime 14 " "].[$fill $locBytes 20 " "].[$fill $locPack 20 " "]."$locInt");  <br /> &nbsp; &nbsp; &nbsp; &nbsp;:terminal style none; &nbsp;<br /> &nbsp; &nbsp;} else={ &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;:put ([$fill $locMAC 19 " "].[$fill $locIP 17 " "].[$fill $locName 12 " "].[$fill $locCAP 16 " "].[$fill $locSignal 7 " "].[$fill $locSSID 19 " "].[$fill $loctxRate 11 " "].[$fill $locrxRate 11 " "].[$fill $locUptime 14 " "].[$fill $locBytes 20 " "].[$fill $locPack 20 " "]."$locInt");  <br /> &nbsp; &nbsp;} &nbsp;<br />} <br />
			<i>03.03.2022 14:35:00, Bernhard.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425698</link>
			<guid>http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425698</guid>
			<pubDate>Thu, 03 Mar 2022 14:35:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425697">Скрипт для отображения клиентов в WLAN (с именем хоста и точкой доступа)</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Всем привет! В CAPsMAN можно вывести список всех зарегистрированных клиентов на всех CAP интерфейсах. Видны MAC-адрес клиента и интерфейс. Но то, чего не видно — это DHCP-имя клиента и к какой точке доступа он подключён. Я написал скрипт, который выводит именно эту информацию. Вот что вы получите:<br /><br />MAC &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Клиент &nbsp; &nbsp; &nbsp;Точка доступа &nbsp;Сигнал &nbsp;TX скорость &nbsp;RX скорость &nbsp;Время работы &nbsp;Байт &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Пакетов &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Интерфейс &nbsp;<br />FF:FF:FF:11:3E:9C &nbsp;192.168.12.251 &nbsp; Client01 &nbsp; &nbsp;AccessPoint01 &nbsp;-53 &nbsp; &nbsp; 117Mbps &nbsp; &nbsp; &nbsp;12Mbps &nbsp; &nbsp; &nbsp;5d01:54:54 &nbsp; &nbsp;68431014,22847922 &nbsp;286257,200633 &nbsp; &nbsp; &nbsp; cap14 &nbsp;<br />FF:FF:FF:11:76:9A &nbsp;192.168.12.250 &nbsp; Client02 &nbsp; &nbsp;AccessPoint03 &nbsp;-75 &nbsp; &nbsp; 16Mbps &nbsp; &nbsp; &nbsp; 12Mbps &nbsp; &nbsp; &nbsp;1d10:54:53 &nbsp; &nbsp;68123014,54347922 &nbsp;286257,200633 &nbsp; &nbsp; &nbsp; cap12 &nbsp;<br /><br />Вот мой скрипт:<br /><br />:global fill do={<br />	# эта функция заполняет строку символом до заданной длины — чтобы сделать табличный вывод значений<br />	# 3 параметра: #1 строка для заполнения<br />	# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #2 длина, до которой заполняется (или обрезается)<br />	# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #3 символ для заполнения (или разделитель, если обрезаем)<br />	# если длина строки больше или равна длине параметра минус 1, строка обрезается до length-1 и в конце добавляется символ-разделитель<br />	:local STR $1;<br />	:local LEN $2;<br />	:local CHAR $3;<br />	:if ([:len $STR] &gt;= $LEN) do={<br />		# строка обрезается<br />		:set STR ([:pick $STR 0 ($LEN-1)].$CHAR);<br />	} else {<br />		# строка дополняется до длины<br />		:for i from=1 to=($LEN-[:len $STR]) step=1 do={<br />			:set STR ("$STR" . $CHAR);<br />		}<br />	}<br />	:return $STR;<br />}<br /><br />:put ([$fill "MAC" 19 " "].[$fill "IP" 17 " "].[$fill "Client" 12 " "].[$fill "AP" 16 " "].[$fill "Signal" 7 " "].[$fill "TX Rate" 11 " "].[$fill "RX Rate" 11 " "].[$fill "Uptime" 14 " "].[$fill "Bytes" 20 " "].[$fill "Packets" 20 " "]."Interface");<br />:foreach i in=[/caps-man registration-table find .id] do={<br />	:local locMAC &nbsp; &nbsp;[/caps-man registration-table get $i mac-address];<br />	:local locInt &nbsp; &nbsp;[/caps-man registration-table get $i interface];<br />	:local locSignal [/caps-man registration-table get $i rx-signal];<br />	:local loctxRate [/caps-man registration-table get $i tx-rate];<br />	# сокращаем до значимого: "173.3Mbps-20MHz/2S/SGI" --&gt; "173.3Mbps"<br />	:if ([:find $loctxRate "-" -1] &gt; 0) do={ :set loctxRate [:pick $loctxRate 0 [:find $loctxRate "-" -1]];}<br />	:local locrxRate [/caps-man registration-table get $i rx-rate];<br />	:if ([:find $locrxRate "-" -1] &gt; 0) do={ :set locrxRate [:pick $locrxRate 0 [:find $locrxRate "-" -1]];}<br />	:local locUptime [/caps-man registration-table get $i uptime];<br />	:set locUptime &nbsp; [:pick $locUptime 0 [:find $locUptime "." -1]];<br />	:local locBytes &nbsp;[/caps-man registration-table get $i bytes];<br />	:local locPack &nbsp; [/caps-man registration-table get $i packets];<br />	:local locRadMAC [/caps-man interface get [/caps-man interface find name=$locInt] radio-mac];<br />	:local locCAP &nbsp; &nbsp;[/caps-man radio get [/caps-man radio find radio-mac=$locRadMAC] remote-cap-identity];<br />	:local locIP &nbsp; &nbsp; [/ip dhcp-server lease get [/ip dhcp-server lease find mac-address=$locMAC] address];<br />	:local locName &nbsp; [/ip dhcp-server lease get [/ip dhcp-server lease find mac-address=$locMAC] host-name];<br />	:put ([$fill $locMAC 19 " "].[$fill $locIP 17 " "].[$fill $locName 12 " "].[$fill $locCAP 16 " "].[$fill $locSignal 7 " "].[$fill $loctxRate 11 " "].[$fill $locrxRate 11 " "].[$fill $locUptime 14 " "].[$fill $locBytes 20 " "].[$fill $locPack 20 " "]."$locInt");<br />}<br /><br />С уважением, &nbsp;<br />Bernhard <br />
			<i>04.10.2021 12:47:00, Bernhard.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425697</link>
			<guid>http://mikrotik.moscow/forum/forum57/88321-skript-dlya-otobrazheniya-klientov-v-wlan-_s-imenem-khosta-i-tochkoy-dostupa/message425697</guid>
			<pubDate>Mon, 04 Oct 2021 12:47:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
