Tak zdá se, že ten globální záměr, zkrátit výpadek spojení u klienta z desítek sekund na jednu sekundu při mžikovém zarušení by (asi) mohl fungovat.
Zde je poslední verze, funkční. Pokud to někomu na něčem nepojede, ať si to upraví dle svého. Všechno je nastavitelné a okomentované. mpcz, 9dec2019
Výpis logu při změně situace na AP:
16 system,info,account user admin logged in from 192.168.0.26 via winbox
16 wireless,info D4@wlan1-konektivita: lost connection, received deauth: unspecified (1) OFF/ON AP - simul. zarušení
16 wireless,info D4@wlan1-konektivita established connection on 5640000, SSID skript vypadl pouze jeden ping
16 wireless,info D4@wlan1-konektivita: lost connection, received deauth: unspecified (1) AP přešlo na jinou frekvenci
16 script,error Bezdratove rozhrani wlan1-konektivita je v chybnem stavu klient to zjistil
16 system,info device changed by admin a roztáhl rozsah scanu
16 wireless,info D4@wlan1-konektivita established connection on 5700000, SSID skript a připojil se na novou frekv.
16 wireless,info D4@wlan1-konektivita: lost connection, disabling
16 system,info device changed by admin zafixoval již novou f
16 script,info Bezdratove rozhrani wlan1-konektivita nyni funguje spravne a zůstal na ní
16 wireless,info D4@wlan1-konektivita established connection on 5700000, SSID skript
16 system,info,account user admin logged in from 192.168.0.26 via telnet
Poslední verze skriptu (bez záruky), zrozeno a testováno v SXT ROS 6.44.3:
limitNeuspechu 10
limitUspechu 10
scanList "5400-5900"
interface [
( = 0) do={
/log error message="Nenalezeno rozhrani pro kontrolu pripojeni!"
"Ukoncuji"
}
interfaceName
60
/log info message="Startuje kontrola pripojeni na $interfaceName"
while (true) do={
# vyhodnoceni nefunkcnosti
neuspechu 0
{
1
if ( = true) \
do={ neuspechu 0 } \
else={ neuspechu ($neuspechu + 1) }
} while=(neuspechu < $limitNeuspechu);
/log error message="Bezdratove rozhrani $interfaceName je v chybnem stavu"
# nastaveni vychoziho scan listu
/interface wireless set $interface scan-list="$scanList"
# odeslani mailu na pozadi
# { /system script run scan_list_email }
# vyhodnoceni funkcnosti
uspechu 0
curFreq
{
1
if ( = true) \
do={ uspechu ($uspechu + 1) } \
else={ uspechu 0 }
curFreq (->"channel")
} while=(uspechu < $limitUspechu);
# nastaveni jedne frekvence do scan listu (te aktualni)
pos
curFreq
/interface wireless set $interface scan-list="$curFreq"
/log info message="Bezdratove rozhrani $interfaceName nyni funguje spravne"
}