Verze 3.X ma mnoho problemu se scriptovaním. Upravil jsem ten muj script pro verzi 3.X:
script "startup" - zavádí se při startu, definuje prommene A,B a C a vzrobí z nich pole (změna ve verzi 3.X). A je pole testovaných IP adres, B je pole názvů jednotlivých AP, C je pole stavů - 1=dostupný, 2=poprvé nedostupná, 3=podruhé nedostupný->pošli SMS(mail)
:global A [:toarray "10.10.1.1,10.10.2.1,10.10.3.1"];
:global B [:toarray "AP1,AP2,AP3"];
:global C [:toarray "1,1,1"];
script "IP_TEST" - testuje dostupnost AP podle zadání v proměnných A,B a C. Ve verzi 3 nefunguji lokalni promenne a globalní se "spatne" predavaji, musi se "aktivovat" novou deklaraci. Manuál k verzi 3 jsem zatím nenašel (prý asi ještě není), tak mě nekamenujte! - rozcházel jsem to metodou pokus-omyl :)
# Testovani dostupnosti serveru
# Zmena stavu zaslana na mail (SMS)
# Created by TWEETY (www.tweety.cz)
# for Mikrotik v3.x
# script zjistuje dostupnost zadanych adres serveru a zmenu stavu zasila na udany mail
# script predpoklada tri globalni promenne A, B a C.
# A je pole IP adres oddelene carkami
# B je pole nazvu serveru oddelene carkami
# C je pole stavu
# 1=server je dostupny, 2=server je nedostupny - cekam,3=server je nedostupny
#Zde vyplnte vas email
:global email vas@email.cz
#"natazeni" globalnich promennych
:global A;
:global B;
:global C;
:global stav ""
:global predchozistav ""
:global novystav ""
:global zprava ""
:for i from=0 to=([:len $A]-1) do={
:set predchozistav [:pick $C $i]
:put $predchozistav
:if ([/ping [:pick $A $i] count=5] = 0) do={
:if ($predchozistav = 2) do={
:set zprava ($zprava . [:pick $B $i] . " DOWN!,")
:log error ([:pick $B $i] . " DOWN!")
}
:set novystav 3
:if ($predchozistav = 1) do={
:set novystav 2
}
} else={
:if ($predchozistav = 3) do={
:set zprava ($zprava . [:pick $B $i] . " UP!,")
:log error ([:pick $B $i] . " UP!")
}
:set novystav 1
}
:set stav ($stav . "," . $novystav)
}
#Odesli zpravu
:if ([:len $zprava] > 0) do={
/tool e-mail send to=$email subject=("Cas: " . [/system clock get time]) body=$zprava
}
#uloz novy stav
:set C [:toarray $stav]
Pak jen zavést do scheduleru:
/system scheduler
add comment="" disabled=no interval=5m name=iptest on-event=IP_TEST start-date=jan/01/1970 start-time=00:00:00
add comment="" disabled=no interval=0s name=startup_router on-event=startup start-time=startup