Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Script: przelacznik na awaryjne lacze
- # Przeznaczony dla MikroTik v5.xx, v6.xx (test na 6.24, 6.25rc7)
- # Version: 7.3.0 [17-01-2015]
- # Autor: seszu (seba\@kazuko.pl)
- # Page: http://kazuko.pl
- #### START # USTAWIENIA
- ### Ustawienia interfejsĂłw WANowych
- :local interDEF "001-WAN1";
- :local rodzajDEF "static";
- :local interNEX "005-WAN2";
- :local rodzajNEX "static";
- ### Ustawienia pinga
- :local pingIP1 "8.8.4.4";
- :local pingIP2 "false";
- :local ilePingow 5;
- :local ilePingOK 2;
- ### Ustawienia powiadomien MAIL
- :local powiadomienieMail "true";
- :local smtpLogin "monitoring@sdp.pl";
- :local smtpHaslo "supertajnehaslo";
- :local smtpHost "sdp2.home.pl";
- :local smtpPort "587";
- :local smtpMail "monitoring@sdp.pl";
- :local smtpMailDO "konrad@abramowiczk.pl";
- ### Ustawienia powiadomien SMS (modem USB)
- :local powiadomienieSMS "false";
- :local modemUSB "usb3";
- :local smsDO "500XXXXXX,600XXXXXX";
- ### Ustawienia dynamic dns (dynDNS/hostDNS)
- :local dynDNS "false";
- :local dynUser "login";
- :local dynPasswd "haselo";
- :local dynHost "sub.domena.pl";
- :local protDynSerwer "http";
- :local hostDynSerwer "nic.changeip.com";
- :local pathDynSerwer "/nic/update?hostname=$dynHost&myip=";
- ### Ustawienia skad ma pobierac zewnetrzny IP
- :local IPzNeta "true";
- :local urlGetIP "myip.dnsomatic.com"
- #### END # USTAWIENIA
- :global LACZE;
- :global CZEKAJ;
- :global oldIPdyn;
- :global newIPdyn;
- :local log "";
- ### START # Sprawdza czy juz jest uruchomiony skrypt ###
- :local runScript 0;
- :foreach i in=[/system script job find] do={
- :local name [/system script job get $i script]
- :if ("$name"="Go2BackupNet") do={
- :set runScript ($runScript+1);
- :if ($runScript > 2 or $runScript = 2) do={ quit; }
- }
- }
- ### END # Sprawdza czy juz jest uruchomiony skrypt ###
- # All this is just to convert XwYdHH:MM:SS to seconds.
- :local upTime [/system resource get uptime]
- :local weeks [:pick $upTime 0 [:find $upTime "w"]]
- :set upTime [:pick $upTime ([:find $upTime "w"]+1) [:len $upTime]]
- :local days [:pick $upTime 0 [:find $upTime "d"]]
- :set upTime [:pick $upTime ([:find $upTime "d"]+1) [:len $upTime]]
- :local hours [:pick $upTime 0 [:find $upTime ":"]]
- :set upTime [:pick $upTime ([:find $upTime ":"]+1) [:len $upTime]]
- :local minutes [:pick $upTime 0 [:find $upTime ":"]]
- :set upTime [:pick $upTime ([:find $upTime ":"]+1) [:len $upTime]]
- :local seconds $upTime
- :local upSeconds [(($weeks*604800)+($days*86400)+($hours*3600)+($minutes*60)+$seconds)]
- ### START # TEST - interDEF & interNEX ###
- :local iDEF;
- :local iNEX;
- :local iDEFd;
- :local iNEXd;
- :local iDEFr;
- :local iNEXr;
- :foreach i in=[/interface find] do={
- :local name [/interface get $i name]
- :if ($name=$interDEF) do={ :set iDEF $interDEF; :set iDEFd [/interface get $i disabled]; :set iDEFr [/interface get $i running]; }
- :if ($name=$interNEX) do={ :set iNEX $interNEX; :set iNEXd [/interface get $i disabled]; :set iNEXr [/interface get $i running]; }
- }
- :if (!($iDEF=$interDEF)) do={ :log error "Brak interfesju '$interDEF', zmienna interDEF! STOP!"; quit; }
- :if (!($iNEX=$interNEX)) do={ :log error "Brak interfesju '$interNEX', zmienna interNEX! STOP!"; quit; }
- :if ("$iDEFd" = "true" or $iDEFd = true) do={ :log error "Interfes '$interDEF' jest wylaczony! STOP!"; quit; }
- :if ("$iNEXd" = "true" or $iNEXd = true) do={ :log error "Interfes '$interNEX' jest wylaczony! STOP!"; quit; }
- ### END # TEST - interDEF & interNEX ###
- ### START # TEST - pingIP1 & pingIP2 ###
- :local toIP1 [:toip $pingIP1];
- :if ($pingIP1 != $toIP1) do={ :log error "Zawartosc zmiennej pingIP1 ($pingIP1) nie jest IP! STOP!"; quit; }
- :if (!("$pingIP2" = "false" or $pingIP2 = false)) do={
- :local toIP2 [:toip $pingIP2];
- :if ($pingIP2 != $toIP2) do={ :log error "Zawartosc zmiennej pingIP2 ($pingIP2) nie jest IP! STOP!"; quit; }
- }
- ### END # TEST - pingIP1 & pingIP2 ###
- ### START # TEST - ilePingow ###
- :local TESTilePingow [:tonum $ilePingow];
- :if ($ilePingow != $TESTilePingow) do={ :log error "Zawartosc zmiennej ilePingow ($ilePingow) nie jest liczbÄ…! STOP!"; quit; }
- ### END # TEST - ilePingow ###
- ### START # TEST - ilePingOK ###
- :local TESTilePingOK [:tonum $ilePingOK];
- :if ($ilePingOK != $TESTilePingOK) do={ :log error "Zawartosc zmiennej ilePingOK ($ilePingOK) nie jest liczbÄ…! STOP!"; quit; }
- ### END # TEST - ilePingOK ###
- ### START # TEST - rodzajDEF ###
- :if (!($rodzajDEF = "dhcp" or $rodzajDEF = "pppoe" or $rodzajDEF = "ppp" or $rodzajDEF = "static")) do={
- :log error "Zawartosc zmiennej rodzajDEF ($rodzajDEF) jest zle zdefiniowana [dhcp|pppoe|ppp|static]! STOP!"; quit;
- }
- ### END # TEST - rodzajDEF ###
- ### START # TEST - rodzajNEX ###
- :if (!($rodzajNEX = "dhcp" or $rodzajNEX = "pppoe" or $rodzajNEX = "ppp" or $rodzajNEX = "static")) do={
- :log error "Zawartosc zmiennej rodzajNEX ($rodzajNEX) jest zle zdefiniowana [dhcp|pppoe|ppp|static]! STOP!"; quit;
- }
- ### END # TEST - rodzajNEX ###
- ### START # POBIERANIE BRAM ###
- :local gateTRAS "1.1.1.1"; :local gateTRASk "0";
- :local gateDEF "1.1.1.1"; :local gateDEFk "0";
- :local gateNEX "2.2.2.2"; :local gateNEXk "0";
- :local gatePING1 "1.1.1.1"; :local gatePING1k "0"; :local gotoPING1 "";
- :local gatePING2 "1.1.1.1"; :local gatePING2k "0"; :local gotoPING2 "";
- :local gateGETIP "1.1.1.1"; :local gateGETIPk "0"; :local gotoGETIP "";
- :foreach r in=[/ip route find disabled=no] do={
- :if ([/ip route get $r gateway]=[:toip [/ip route get $r gateway]]) do={
- :if ("trasa-neta"="$[/ip route get $r comment]") do={
- :set gateTRAS [/ip route get $r gateway];
- :set gateTRASk "1";
- }
- :if ("11"="$[:tonum [/ip route get $r distance]]") do={
- :set gateDEF [/ip route get $r gateway];
- :set gateDEFk "1";
- }
- :if ("22"="$[:tonum [/ip route get $r distance]]") do={
- :set gateNEX [/ip route get $r gateway];
- :set gateNEXk "1";
- }
- :if ("ping-test-1"="$[/ip route get $r comment]") do={
- :set gatePING1 [/ip route get $r gateway];
- :set gotoPING1 [/ip route get $r dst-address];
- :set gotoPING1 [:pick $gotoPING1 0 [:find $gotoPING1 "/"]]
- :set gatePING1k "1";
- }
- :if ("ping-test-2"="$[/ip route get $r comment]") do={
- :set gatePING2 [/ip route get $r gateway];
- :set gotoPING2 [/ip route get $r dst-address];
- :set gotoPING2 [:pick $gotoPING2 0 [:find $gotoPING2 "/"]]
- :set gatePING2k "1";
- }
- :if ("trasa-get-ip"="$[/ip route get $r comment]") do={
- :set gateGETIP [/ip route get $r gateway];
- :set gotoGETIP [/ip route get $r dst-address];
- :set gotoGETIP [:pick $gotoGETIP 0 [:find $gotoGETIP "/"]]
- :set gateGETIPk "1";
- }
- }
- }
- ### END # POBIERANIE BRAM ###
- ### START # TEST - ping-test-1 & ping-test-2 ###
- :if ("$gatePING1k" = "1") do={
- :if ("$pingIP1" != "$gotoPING1" or "$gatePING1" != "$gateDEF") do={
- :local zmien [/ip route set [find comment="ping-test-1"] dst-address=$pingIP1 gateway=$gateDEF disabled=no]
- }
- } else={
- :local dodaj [/ip route add comment=ping-test-1 disabled=no distance=1 dst-address=$pingIP1 gateway=$gateDEF scope=30 target-scope=10]
- }
- :if ("$gatePING2k" = "1") do={
- :if ("$pingIP2" = "false") do={
- :local usun [/ip route remove [find comment="ping-test-2"]]
- } else={
- :if ("$pingIP2" != "$gotoPING2" or "$gatePING2" != "$gateDEF") do={
- :local zmien [/ip route set [find comment="ping-test-2"] dst-address=$pingIP2 gateway=$gateDEF disabled=no]
- }
- }
- } else={
- :if (!("$pingIP2" = "false" or $pingIP2 = false)) do={
- :local dodaj [/ip route add comment=ping-test-2 disabled=no distance=1 dst-address=$pingIP2 gateway=$gateDEF scope=30 target-scope=10]
- }
- }
- ### END # TEST - ping-test-1 & ping-test-2 ###
- ### START # TEST - trasa-neta ###
- :if ("$gateTRASk" = "0") do={
- :local add [/ip route add comment=trasa-neta disabled=no distance=1 dst-address=0.0.0.0/0 gateway=$gateTRAS scope=30 target-scope=10];
- }
- ### END # TEST - trasa-neta ###
- #### START # ADD/DEL ROUTE - GET IP ###
- # :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
- # :if ("$gateGETIPk" = "0") do={
- # :local IPgetIP [:resolve $urlGetIP]
- # :local dodaj [/ip route add comment=trasa-get-ip disabled=no distance=1 dst-address=$IPgetIP gateway=$gateTRAS scope=30 target-scope=10]
- # }
- # } else {
- # :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
- # :if ("$gateGETIPk" = "1") do={
- # :local usun [/ip route remove [find comment="trasa-get-ip"]]
- # }
- # }
- # }
- ### END # ADD/DEL ROUTE - GET IP ###
- ### START # TEST ping ###
- :local ping1 "0";
- :local ping2 "0";
- if ("$iDEFr" = "true" or $iDEFr = true) do={
- :set ping1 [/ping $pingIP1 count=$ilePingow interface=$interDEF]
- :if (!("$pingIP2" = "false" or $pingIP2 = false)) do={
- :set ping2 [/ping $pingIP2 count=$ilePingow interface=$interDEF]
- } else={
- :set ping2 $ping1
- }
- }
- ### END # TEST ping ###
- ### START # PO RESTARCIE
- ## PING OK
- :if ($ilePingOK < $ping1 and $ilePingOK < $ping2 and !($LACZE = "ZAPASOWE" or $LACZE = "DOMYSLNE")) do={
- :if (120 < $upSeconds) do={
- :set log "Ping OK: Praca na domyslnym laczu..."; :log warning $log;
- :set LACZE "DOMYSLNE"
- :set CZEKAJ "";
- } else={
- :if ($gateTRAS != $gateDEF) do={
- :set log "Ping OK: Chwile temu byl restart MT. Praca na domyslnym laczu..."; :log warning $log;
- :set LACZE "DOMYSLNE";
- :set CZEKAJ "";
- :if (($gateDEF=[:toip $gateDEF]) and "$gateDEF" != "1.1.1.1" and "$gateTRAS" != "2.2.2.2") do={
- :local zmien [/ip route set [find comment="trasa-neta"] gateway=$gateDEF disabled=no];
- }
- ### START ## URUCHAMIA PRZY STARCIE SYSTEMU ORAZ PRZELACZANIU NA DOMYSLE LACZE
- ### END ## URUCHAMIA PRZY STARCIE SYSTEMU ORAZ PRZELACZANIU NA DOMYSLE LACZE
- :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
- :set newIPdyn [/ip address get [find interface=$interDEF disabled=no] value-name=address]
- :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
- } else {
- :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
- :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$gateDEF disabled=no];
- /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
- :set newIPdyn [/file get myip.txt contents]
- }
- }
- :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
- :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
- :local oldIPdyn2 $oldIPdyn
- :set oldIPdyn $newIPdyn
- /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
- src-path="$pathDynSerwer$newIPdyn" keep-result=no
- :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
- }
- :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
- :foreach m in=[:toarray $smtpMailDO] do={
- :log info "MAIL --> $m";
- /tool e-mail send server=[:resolve $smtpHost] subject="$[/system identity get name] - $log" to="$m" from="$smtpMail" user="$smtpLogin" password="$smtpHaslo" port="$smtpPort" body="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
- :foreach usb in=[/port find] do={
- :if ([/port get $usb name]=$modemUSB) do={
- :foreach n in=[:toarray $smsDO] do={
- :log info "SMS --> $n";
- /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- }
- }
- } else {
- :set log "Ping OK: Chwile temu byl restart MT."; :log warning $log;
- :set LACZE "DOMYSLNE";
- :set CZEKAJ "";
- ### START ## URUCHAMIA PRZY STARCIE SYSTEMU - PRACUJE CIAGE NA DOMYSLNYM LACZU
- ### END ## URUCHAMIA PRZY STARCIE SYSTEMU - PRACUJE CIAGE NA DOMYSLNYM LACZU
- :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
- :set newIPdyn [/ip address get [find interface=$interDEF disabled=no] value-name=address]
- :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
- } else {
- :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
- :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$gateDEF disabled=no];
- /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
- :set newIPdyn [/file get myip.txt contents]
- }
- }
- :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
- :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
- :local oldIPdyn2 $oldIPdyn
- :set oldIPdyn $newIPdyn
- /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
- src-path="$pathDynSerwer$newIPdyn" keep-result=no
- :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
- }
- :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
- :foreach m in=[:toarray $smtpMailDO] do={
- :log info "MAIL --> $m";
- /tool e-mail send server=[:resolve $smtpHost] subject="$[/system identity get name] - $log" to="$m" from="$smtpMail" user="$smtpLogin" password="$smtpHaslo" port="$smtpPort" body="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
- :foreach usb in=[/port find] do={
- :if ([/port get $usb name]=$modemUSB) do={
- :foreach n in=[:toarray $smsDO] do={
- :log info "SMS --> $n";
- /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- }
- }
- }
- }
- quit;
- ## PING ERROR
- } else={ :if (!($LACZE = "ZAPASOWE" or $LACZE = "DOMYSLNE")) do={
- :if (120 < $upSeconds) do={
- :set log "Ping ERROR: Przelaczanie na zapasowe lacze...";
- } else={
- :set log "Ping ERROR: Chwile temu byl restart MT. Przelaczanie na zapasowe lacze...";
- }
- :log error $log;
- :set LACZE "ZAPASOWE";
- :set CZEKAJ "";
- :if ($gateTRAS != $gateNEX) do={
- :if ("$gateNEX" = "$[:toip $gateNEX]") do={
- :local zmien [/ip route set [find comment="trasa-neta"] gateway=$gateNEX disabled=no];
- }
- ### START ## URUCHAMIA PRZY STARCIE SYSTEMU ORAZ PRZELACZANIU NA ZAPASOWE LACZE
- ### END ## URUCHAMIA PRZY STARCIE SYSTEMU ORAZ PRZELACZANIU NA ZAPASOWE LACZE
- :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
- :set newIPdyn [/ip address get [find interface=$interNEX disabled=no] value-name=address]
- :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
- } else {
- :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
- :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$interNEX disabled=no];
- /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
- :set newIPdyn [/file get myip.txt contents]
- }
- }
- :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
- :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
- :local oldIPdyn2 $oldIPdyn
- :set oldIPdyn $newIPdyn
- /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
- src-path="$pathDynSerwer$newIPdyn" keep-result=no
- :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
- }
- :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
- :foreach m in=[:toarray $smtpMailDO] do={
- :log info "MAIL --> $m";
- /tool e-mail send server=[:resolve $smtpHost] subject="$[/system identity get name] - $log" to="$m" from="$smtpMail" user="$smtpLogin" password="$smtpHaslo" port="$smtpPort" body="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
- :foreach usb in=[/port find] do={
- :if ([/port get $usb name]=$modemUSB) do={
- :foreach n in=[:toarray $smsDO] do={
- :log info "SMS --> $n";
- /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- }
- }
- }
- quit;
- }}
- ### END # PO RESTARCIE
- ### START # LACZE DOMYSLNE & ZAPASOWE
- ### NA ZAPASOWE
- :if ($ilePingOK > $ping1 and $ilePingOK > $ping2 and $LACZE = "DOMYSLNE") do={
- ########## ADRESY NA SZTYWNO
- :if ("$rodzajNEX" = "static" or "$CZEKAJ" = "1") do={
- :set log "Ping ERROR: Przelaczanie na zapasowe lacze..."; :log error $log;
- :set LACZE "ZAPASOWE";
- :set CZEKAJ "";
- :if ("$gateTRAS" != "$gateNEX") do={
- :if ("$gateNEX" = "$[:toip $gateNEX]") do={
- :local zmien [/ip route set [find comment="trasa-neta"] gateway=$gateNEX disabled=no];
- }
- ### START ## URUCHAMIA PRZY PRZELACZANIU NA ZAPASOWE LACZE
- ### END ## URUCHAMIA PRZY PRZELACZANIU NA ZAPASOWE LACZE
- :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
- :set newIPdyn [/ip address get [find interface=$interNEX disabled=no] value-name=address]
- :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
- } else {
- :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
- :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$interNEX disabled=no];
- /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
- :set newIPdyn [/file get myip.txt contents]
- }
- }
- :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
- :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
- :local oldIPdyn2 $oldIPdyn
- :set oldIPdyn $newIPdyn
- /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
- src-path="$pathDynSerwer$newIPdyn" keep-result=no
- :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
- }
- :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
- :foreach m in=[:toarray $smtpMailDO] do={
- :log info "MAIL --> $m";
- /tool e-mail send server=[:resolve $smtpHost] subject="$[/system identity get name] - $log" to="$m" from="$smtpMail" user="$smtpLogin" password="$smtpHaslo" port="$smtpPort" body="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
- :foreach usb in=[/port find] do={
- :if ([/port get $usb name]=$modemUSB) do={
- :foreach n in=[:toarray $smsDO] do={
- :log info "SMS --> $n";
- /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- }
- }
- }
- ########## ADRESY NA AUTO - DHCP, PPPOE, PPP
- } else {
- :local ping1NEX 0;
- :local ping2NEX 0;
- if ("$iNEXr" = "true" or $iNEXr = true) do={
- :set ping1NEX [/ping $pingIP1 count=$ilePingow interface=$interNEX]
- :if (!("$pingIP2" = "false" or $pingIP2 = false)) do={
- :set ping2NEX [/ping $pingIP2 count=$ilePingow interface=$interNEX]
- } else={
- :set ping2NEX $ping1NEX
- }
- }
- ################# BRAK PINGA NA ZAPASOWYM LACZU - RESTART INTEREJSU
- :if ($ilePingOK > $ping1NEX and $ilePingOK > $ping2NEX) do={
- :if ($rodzajNEX="dhcp") do={
- :local odswiez [/ip dhcp-client release [find interface=$interNEX]]
- } else={
- :if ($rodzajNEX="pppoe") do={
- :local odswiez [/interface pppoe-client disable [find name=$interNEX]]
- :local odswiez [/interface pppoe-client enable [find name=$interNEX]]
- } else={
- :if ($rodzajNEX="ppp") do={
- :local odswiez [/interface ppp-client disable [find name=$interNEX]]
- :local odswiez [/interface ppp-client enable [find name=$interNEX]]
- }
- }
- }
- :set CZEKAJ 1;
- ################# PING OK NA ZAPASOWYM LACZU
- } else {
- :set log "Ping ERROR: Przelaczanie na zapasowe lacze..."; :log error $log;
- :set LACZE "ZAPASOWE";
- :set CZEKAJ "";
- :if ("$gateTRAS" != "$gateNEX") do={
- :if ("$gateNEX" = "$[:toip $gateNEX]") do={
- :local zmien [/ip route set [find comment="trasa-neta"] gateway=$gateNEX disabled=no];
- }
- ### START ## URUCHAMIA PRZY PRZELACZANIU NA ZAPASOWE LACZE
- ### END ## URUCHAMIA PRZY PRZELACZANIU NA ZAPASOWE LACZE
- :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
- :set newIPdyn [/ip address get [find interface=$interNEX disabled=no] value-name=address]
- :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
- } else {
- :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
- :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$interNEX disabled=no];
- /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
- :set newIPdyn [/file get myip.txt contents]
- }
- }
- :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
- :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
- :local oldIPdyn2 $oldIPdyn
- :set oldIPdyn $newIPdyn
- /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
- src-path="$pathDynSerwer$newIPdyn" keep-result=no
- :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
- }
- :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
- :foreach m in=[:toarray $smtpMailDO] do={
- :log info "MAIL --> $m";
- /tool e-mail send server=[:resolve $smtpHost] subject="$[/system identity get name] - $log" to="$m" from="$smtpMail" user="$smtpLogin" password="$smtpHaslo" port="$smtpPort" body="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
- :foreach usb in=[/port find] do={
- :if ([/port get $usb name]=$modemUSB) do={
- :foreach n in=[:toarray $smsDO] do={
- :log info "SMS --> $n";
- /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- }
- }
- }
- }
- }
- ### NA DOMYSLNE
- } else={ :if ($LACZE = "ZAPASOWE") do={
- ########## ADRESY NA SZTYWNO
- :if ("$rodzajDEF" = "static" or "$CZEKAJ" = "1") do={
- :if ($ilePingOK < $ping1 and $ilePingOK < $ping2 and $LACZE = "ZAPASOWE") do={
- :set log "Ping OK: Przelaczanie na domyslne lacze..."; :log warning $log;
- :set LACZE "DOMYSLNE";
- :set CZEKAJ "";
- :if ($gateTRAS != $gateDEF) do={
- :if (($gateDEF=[:toip $gateDEF]) and "$gateDEF" != "1.1.1.1" and "$gateTRAS" != "2.2.2.2") do={
- :local zmien [/ip route set [find comment="trasa-neta"] gateway=$gateDEF disabled=no];
- }
- ### START ## URUCHAMIA PRZY PRZELACZANIU NA DOMYSLNE LACZE
- ### END ## URUCHAMIA PRZY PRZELACZANIU NA DOMYSLNE LACZE
- :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
- :set newIPdyn [/ip address get [find interface=$interDEF disabled=no] value-name=address]
- :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
- } else {
- :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
- :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$gateDEF disabled=no];
- /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
- :set newIPdyn [/file get myip.txt contents]
- }
- }
- :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
- :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
- :local oldIPdyn2 $oldIPdyn
- :set oldIPdyn $newIPdyn
- /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
- src-path="$pathDynSerwer$newIPdyn" keep-result=no
- :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
- }
- :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
- :foreach m in=[:toarray $smtpMailDO] do={
- :log info "MAIL --> $m";
- /tool e-mail send server=[:resolve $smtpHost] subject="$[/system identity get name] - $log" to="$m" from="$smtpMail" user="$smtpLogin" password="$smtpHaslo" port="$smtpPort" body="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
- :foreach usb in=[/port find] do={
- :if ([/port get $usb name]=$modemUSB) do={
- :foreach n in=[:toarray $smsDO] do={
- :log info "SMS --> $n";
- /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- }
- }
- }
- } else {
- :set log "Ping ERROR: Praca na awaryjnym laczu..."; :log error $log;
- }
- ########## ADRESY NA AUTO - DHCP, PPPOE, PPP
- } else {
- ################# BRAK PINGA NA DOMYSLNYM LACZU - RESTART INTEREJSU
- :if ($ilePingOK > $ping1 and $ilePingOK > $ping2 and $LACZE = "ZAPASOWE") do={
- :set log "Ping ERROR: Praca na awaryjnym laczu..."; :log error $log;
- :if ($rodzajDEF="dhcp") do={
- :local odswiez [/ip dhcp-client release [find interface=$interDEF]]
- } else={
- :if ($rodzajDEF="pppoe") do={
- :local odswiez [/interface pppoe-client disable [find name=$interDEF]]
- :local odswiez [/interface pppoe-client enable [find name=$interDEF]]
- } else={
- :if ($rodzajDEF="ppp") do={
- :local odswiez [/interface ppp-client disable [find name=$interDEF]]
- :local odswiez [/interface ppp-client enable [find name=$interDEF]]
- }
- }
- }
- :set CZEKAJ 1;
- ################# PING OK NA DOMYSLNYM LACZU
- } else {
- :set log "Ping OK: Przelaczanie na domyslne lacze..."; :log warning $log;
- :set LACZE "DOMYSLNE";
- :set CZEKAJ "";
- :if ($gateTRAS != $gateDEF) do={
- :if (($gateDEF=[:toip $gateDEF]) and "$gateDEF" != "1.1.1.1" and "$gateTRAS" != "2.2.2.2") do={
- :local zmien [/ip route set [find comment="trasa-neta"] gateway=$gateDEF disabled=no];
- }
- ### START ## URUCHAMIA PRZY PRZELACZANIU NA DOMYSLNE LACZE
- ### END ## URUCHAMIA PRZY PRZELACZANIU NA DOMYSLNE LACZE
- :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
- :set newIPdyn [/ip address get [find interface=$interDEF disabled=no] value-name=address]
- :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
- } else {
- :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
- :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$gateDEF disabled=no];
- /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
- :set newIPdyn [/file get myip.txt contents]
- }
- }
- :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
- :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
- :local oldIPdyn2 $oldIPdyn
- :set oldIPdyn $newIPdyn
- /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
- src-path="$pathDynSerwer$newIPdyn" keep-result=no
- :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
- }
- :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
- :foreach m in=[:toarray $smtpMailDO] do={
- :log info "MAIL --> $m";
- /tool e-mail send server=[:resolve $smtpHost] subject="$[/system identity get name] - $log" to="$m" from="$smtpMail" user="$smtpLogin" password="$smtpHaslo" port="$smtpPort" body="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
- :foreach usb in=[/port find] do={
- :if ([/port get $usb name]=$modemUSB) do={
- :foreach n in=[:toarray $smsDO] do={
- :log info "SMS --> $n";
- /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
- }
- }
- }
- }
- }
- }
- }
- }}
- ### END # LACZE DOMYSLNE & ZAPASOWE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement