Trochu jsem si to upravil pro použití pro více IP adres. Kdyby tam byly chyby, tak mě nekamenujte. Včera jsem se teprve seznámil s možností scriptovat v MT, takže po 30min bádání je to moje první "dítě".
Vlastní script TESTIP:
# Testovani dostupnosti serveru
# Zmena stavu zaslana na mail (SMS)
# Created by TWEETY (tweety@tweety.cz)
# for Mikrotik v2.9.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 (bez carek)
# 1=server je dostupny, 0=server je nedostupny
#Zde vyplnte vas email
:local email vas@email.cz
#lokalni promenne
:local stav ""
:local predchozistav
:for i from=0 to=([:len $A] - 1) do={
:set predchozistav ([:pick $C $i])
:if ([/ping [:pick $A $i] count=5] = 0) do {
:if ($predchozistav = 1) do {
/tool e-mail send to=$email subject=("Cas: " . [/system clock get time]) body=([:pick $B $i] . " DOWN!")
:log error ([:pick $B $i] . " DOWN!")
}
:set stav ($stav . "0")
} else {
:if ($predchozistav = 0) do {
/tool e-mail send to=$email subject=("Cas: " . [/system clock get time]) body=([:pick $B $i] . " UP!")
:log error ([:pick $B $i] . " UP!")
}
:set stav ($stav . "1")
}
}
#uloz novy stav
:set C ($stav)
Script, který je potřeba spustit po startu routeru. Definuje pole sledovaných adres a nazvu serveru a jejich aktualni stav, resp. žádaný stav po startu routeru (Pole A,B a C).
Script start_up
:global A "10.0.0.1,10.0.0.2,10.0.0.3";
:global B "Server1,Server2,Server3";
:global C "111";
a na závěr kód pro zavedení skriptu start_up po startu a opakování scriptu TESTIP po 5 min
/system scheduler add name="startup_router" on-event=start_up start-time=startup interval=0s
/system scheduler add name="test_ip" on-event=TESTIP interval=5m