Advertisement
Guest User

Untitled

a guest
Sep 11th, 2016
2,716
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.55 KB | None | 0 0
  1.  
  2. # Script: przelacznik na awaryjne lacze
  3. # Przeznaczony dla MikroTik v5.xx, v6.xx (test na 6.24, 6.25rc7)
  4. # Version: 7.3.0 [17-01-2015]
  5. # Autor: seszu (seba\@kazuko.pl)
  6. # Page: http://kazuko.pl
  7.  
  8.  
  9. #### START # USTAWIENIA
  10. ### Ustawienia interfejsĂłw WANowych
  11. :local interDEF "001-WAN1";
  12. :local rodzajDEF "static";
  13. :local interNEX "005-WAN2";
  14. :local rodzajNEX "static";
  15.  
  16. ### Ustawienia pinga
  17. :local pingIP1 "8.8.4.4";
  18. :local pingIP2 "false";
  19. :local ilePingow 5;
  20. :local ilePingOK 2;
  21.  
  22. ### Ustawienia powiadomien MAIL
  23. :local powiadomienieMail "true";
  24. :local smtpLogin "monitoring@sdp.pl";
  25. :local smtpHaslo "supertajnehaslo";
  26. :local smtpHost "sdp2.home.pl";
  27. :local smtpPort "587";
  28. :local smtpMail "monitoring@sdp.pl";
  29. :local smtpMailDO "konrad@abramowiczk.pl";
  30.  
  31. ### Ustawienia powiadomien SMS (modem USB)
  32. :local powiadomienieSMS "false";
  33. :local modemUSB "usb3";
  34. :local smsDO "500XXXXXX,600XXXXXX";
  35.  
  36. ### Ustawienia dynamic dns (dynDNS/hostDNS)
  37. :local dynDNS "false";
  38. :local dynUser "login";
  39. :local dynPasswd "haselo";
  40. :local dynHost "sub.domena.pl";
  41. :local protDynSerwer "http";
  42. :local hostDynSerwer "nic.changeip.com";
  43. :local pathDynSerwer "/nic/update?hostname=$dynHost&myip=";
  44.  
  45. ### Ustawienia skad ma pobierac zewnetrzny IP
  46. :local IPzNeta "true";
  47. :local urlGetIP "myip.dnsomatic.com"
  48.  
  49. #### END # USTAWIENIA
  50.  
  51.  
  52.  
  53.  
  54. :global LACZE;
  55. :global CZEKAJ;
  56. :global oldIPdyn;
  57. :global newIPdyn;
  58. :local log "";
  59.  
  60. ### START # Sprawdza czy juz jest uruchomiony skrypt ###
  61. :local runScript 0;
  62. :foreach i in=[/system script job find] do={
  63. :local name [/system script job get $i script]
  64. :if ("$name"="Go2BackupNet") do={
  65. :set runScript ($runScript+1);
  66. :if ($runScript > 2 or $runScript = 2) do={ quit; }
  67. }
  68. }
  69. ### END # Sprawdza czy juz jest uruchomiony skrypt ###
  70.  
  71.  
  72. # All this is just to convert XwYdHH:MM:SS to seconds.
  73. :local upTime [/system resource get uptime]
  74. :local weeks [:pick $upTime 0 [:find $upTime "w"]]
  75. :set upTime [:pick $upTime ([:find $upTime "w"]+1) [:len $upTime]]
  76. :local days [:pick $upTime 0 [:find $upTime "d"]]
  77. :set upTime [:pick $upTime ([:find $upTime "d"]+1) [:len $upTime]]
  78. :local hours [:pick $upTime 0 [:find $upTime ":"]]
  79. :set upTime [:pick $upTime ([:find $upTime ":"]+1) [:len $upTime]]
  80. :local minutes [:pick $upTime 0 [:find $upTime ":"]]
  81. :set upTime [:pick $upTime ([:find $upTime ":"]+1) [:len $upTime]]
  82. :local seconds $upTime
  83. :local upSeconds [(($weeks*604800)+($days*86400)+($hours*3600)+($minutes*60)+$seconds)]
  84.  
  85.  
  86. ### START # TEST - interDEF & interNEX ###
  87. :local iDEF;
  88. :local iNEX;
  89. :local iDEFd;
  90. :local iNEXd;
  91. :local iDEFr;
  92. :local iNEXr;
  93. :foreach i in=[/interface find] do={
  94. :local name [/interface get $i name]
  95. :if ($name=$interDEF) do={ :set iDEF $interDEF; :set iDEFd [/interface get $i disabled]; :set iDEFr [/interface get $i running]; }
  96. :if ($name=$interNEX) do={ :set iNEX $interNEX; :set iNEXd [/interface get $i disabled]; :set iNEXr [/interface get $i running]; }
  97. }
  98. :if (!($iDEF=$interDEF)) do={ :log error "Brak interfesju '$interDEF', zmienna interDEF! STOP!"; quit; }
  99. :if (!($iNEX=$interNEX)) do={ :log error "Brak interfesju '$interNEX', zmienna interNEX! STOP!"; quit; }
  100. :if ("$iDEFd" = "true" or $iDEFd = true) do={ :log error "Interfes '$interDEF' jest wylaczony! STOP!"; quit; }
  101. :if ("$iNEXd" = "true" or $iNEXd = true) do={ :log error "Interfes '$interNEX' jest wylaczony! STOP!"; quit; }
  102. ### END # TEST - interDEF & interNEX ###
  103.  
  104. ### START # TEST - pingIP1 & pingIP2 ###
  105. :local toIP1 [:toip $pingIP1];
  106. :if ($pingIP1 != $toIP1) do={ :log error "Zawartosc zmiennej pingIP1 ($pingIP1) nie jest IP! STOP!"; quit; }
  107. :if (!("$pingIP2" = "false" or $pingIP2 = false)) do={
  108. :local toIP2 [:toip $pingIP2];
  109. :if ($pingIP2 != $toIP2) do={ :log error "Zawartosc zmiennej pingIP2 ($pingIP2) nie jest IP! STOP!"; quit; }
  110. }
  111. ### END # TEST - pingIP1 & pingIP2 ###
  112.  
  113. ### START # TEST - ilePingow ###
  114. :local TESTilePingow [:tonum $ilePingow];
  115. :if ($ilePingow != $TESTilePingow) do={ :log error "Zawartosc zmiennej ilePingow ($ilePingow) nie jest liczbÄ…! STOP!"; quit; }
  116. ### END # TEST - ilePingow ###
  117.  
  118. ### START # TEST - ilePingOK ###
  119. :local TESTilePingOK [:tonum $ilePingOK];
  120. :if ($ilePingOK != $TESTilePingOK) do={ :log error "Zawartosc zmiennej ilePingOK ($ilePingOK) nie jest liczbÄ…! STOP!"; quit; }
  121. ### END # TEST - ilePingOK ###
  122.  
  123. ### START # TEST - rodzajDEF ###
  124. :if (!($rodzajDEF = "dhcp" or $rodzajDEF = "pppoe" or $rodzajDEF = "ppp" or $rodzajDEF = "static")) do={
  125. :log error "Zawartosc zmiennej rodzajDEF ($rodzajDEF) jest zle zdefiniowana [dhcp|pppoe|ppp|static]! STOP!"; quit;
  126. }
  127. ### END # TEST - rodzajDEF ###
  128.  
  129. ### START # TEST - rodzajNEX ###
  130. :if (!($rodzajNEX = "dhcp" or $rodzajNEX = "pppoe" or $rodzajNEX = "ppp" or $rodzajNEX = "static")) do={
  131. :log error "Zawartosc zmiennej rodzajNEX ($rodzajNEX) jest zle zdefiniowana [dhcp|pppoe|ppp|static]! STOP!"; quit;
  132. }
  133. ### END # TEST - rodzajNEX ###
  134.  
  135.  
  136. ### START # POBIERANIE BRAM ###
  137. :local gateTRAS "1.1.1.1"; :local gateTRASk "0";
  138. :local gateDEF "1.1.1.1"; :local gateDEFk "0";
  139. :local gateNEX "2.2.2.2"; :local gateNEXk "0";
  140. :local gatePING1 "1.1.1.1"; :local gatePING1k "0"; :local gotoPING1 "";
  141. :local gatePING2 "1.1.1.1"; :local gatePING2k "0"; :local gotoPING2 "";
  142. :local gateGETIP "1.1.1.1"; :local gateGETIPk "0"; :local gotoGETIP "";
  143. :foreach r in=[/ip route find disabled=no] do={
  144. :if ([/ip route get $r gateway]=[:toip [/ip route get $r gateway]]) do={
  145. :if ("trasa-neta"="$[/ip route get $r comment]") do={
  146. :set gateTRAS [/ip route get $r gateway];
  147. :set gateTRASk "1";
  148. }
  149. :if ("11"="$[:tonum [/ip route get $r distance]]") do={
  150. :set gateDEF [/ip route get $r gateway];
  151. :set gateDEFk "1";
  152. }
  153. :if ("22"="$[:tonum [/ip route get $r distance]]") do={
  154. :set gateNEX [/ip route get $r gateway];
  155. :set gateNEXk "1";
  156. }
  157. :if ("ping-test-1"="$[/ip route get $r comment]") do={
  158. :set gatePING1 [/ip route get $r gateway];
  159. :set gotoPING1 [/ip route get $r dst-address];
  160. :set gotoPING1 [:pick $gotoPING1 0 [:find $gotoPING1 "/"]]
  161. :set gatePING1k "1";
  162. }
  163. :if ("ping-test-2"="$[/ip route get $r comment]") do={
  164. :set gatePING2 [/ip route get $r gateway];
  165. :set gotoPING2 [/ip route get $r dst-address];
  166. :set gotoPING2 [:pick $gotoPING2 0 [:find $gotoPING2 "/"]]
  167. :set gatePING2k "1";
  168. }
  169. :if ("trasa-get-ip"="$[/ip route get $r comment]") do={
  170. :set gateGETIP [/ip route get $r gateway];
  171. :set gotoGETIP [/ip route get $r dst-address];
  172. :set gotoGETIP [:pick $gotoGETIP 0 [:find $gotoGETIP "/"]]
  173. :set gateGETIPk "1";
  174. }
  175. }
  176. }
  177. ### END # POBIERANIE BRAM ###
  178.  
  179.  
  180. ### START # TEST - ping-test-1 & ping-test-2 ###
  181. :if ("$gatePING1k" = "1") do={
  182. :if ("$pingIP1" != "$gotoPING1" or "$gatePING1" != "$gateDEF") do={
  183. :local zmien [/ip route set [find comment="ping-test-1"] dst-address=$pingIP1 gateway=$gateDEF disabled=no]
  184. }
  185. } else={
  186. :local dodaj [/ip route add comment=ping-test-1 disabled=no distance=1 dst-address=$pingIP1 gateway=$gateDEF scope=30 target-scope=10]
  187. }
  188.  
  189.  
  190. :if ("$gatePING2k" = "1") do={
  191. :if ("$pingIP2" = "false") do={
  192. :local usun [/ip route remove [find comment="ping-test-2"]]
  193. } else={
  194. :if ("$pingIP2" != "$gotoPING2" or "$gatePING2" != "$gateDEF") do={
  195. :local zmien [/ip route set [find comment="ping-test-2"] dst-address=$pingIP2 gateway=$gateDEF disabled=no]
  196. }
  197. }
  198. } else={
  199. :if (!("$pingIP2" = "false" or $pingIP2 = false)) do={
  200. :local dodaj [/ip route add comment=ping-test-2 disabled=no distance=1 dst-address=$pingIP2 gateway=$gateDEF scope=30 target-scope=10]
  201. }
  202. }
  203. ### END # TEST - ping-test-1 & ping-test-2 ###
  204.  
  205.  
  206. ### START # TEST - trasa-neta ###
  207. :if ("$gateTRASk" = "0") do={
  208. :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];
  209. }
  210. ### END # TEST - trasa-neta ###
  211.  
  212.  
  213. #### START # ADD/DEL ROUTE - GET IP ###
  214. # :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
  215. # :if ("$gateGETIPk" = "0") do={
  216. # :local IPgetIP [:resolve $urlGetIP]
  217. # :local dodaj [/ip route add comment=trasa-get-ip disabled=no distance=1 dst-address=$IPgetIP gateway=$gateTRAS scope=30 target-scope=10]
  218. # }
  219. # } else {
  220. # :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
  221. # :if ("$gateGETIPk" = "1") do={
  222. # :local usun [/ip route remove [find comment="trasa-get-ip"]]
  223. # }
  224. # }
  225. # }
  226. ### END # ADD/DEL ROUTE - GET IP ###
  227.  
  228.  
  229. ### START # TEST ping ###
  230. :local ping1 "0";
  231. :local ping2 "0";
  232. if ("$iDEFr" = "true" or $iDEFr = true) do={
  233. :set ping1 [/ping $pingIP1 count=$ilePingow interface=$interDEF]
  234. :if (!("$pingIP2" = "false" or $pingIP2 = false)) do={
  235. :set ping2 [/ping $pingIP2 count=$ilePingow interface=$interDEF]
  236. } else={
  237. :set ping2 $ping1
  238. }
  239. }
  240. ### END # TEST ping ###
  241.  
  242.  
  243.  
  244. ### START # PO RESTARCIE
  245. ## PING OK
  246. :if ($ilePingOK < $ping1 and $ilePingOK < $ping2 and !($LACZE = "ZAPASOWE" or $LACZE = "DOMYSLNE")) do={
  247. :if (120 < $upSeconds) do={
  248. :set log "Ping OK: Praca na domyslnym laczu..."; :log warning $log;
  249. :set LACZE "DOMYSLNE"
  250. :set CZEKAJ "";
  251. } else={
  252. :if ($gateTRAS != $gateDEF) do={
  253. :set log "Ping OK: Chwile temu byl restart MT. Praca na domyslnym laczu..."; :log warning $log;
  254. :set LACZE "DOMYSLNE";
  255. :set CZEKAJ "";
  256.  
  257. :if (($gateDEF=[:toip $gateDEF]) and "$gateDEF" != "1.1.1.1" and "$gateTRAS" != "2.2.2.2") do={
  258. :local zmien [/ip route set [find comment="trasa-neta"] gateway=$gateDEF disabled=no];
  259. }
  260.  
  261.  
  262. ### START ## URUCHAMIA PRZY STARCIE SYSTEMU ORAZ PRZELACZANIU NA DOMYSLE LACZE
  263. ### END ## URUCHAMIA PRZY STARCIE SYSTEMU ORAZ PRZELACZANIU NA DOMYSLE LACZE
  264.  
  265.  
  266. :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
  267. :set newIPdyn [/ip address get [find interface=$interDEF disabled=no] value-name=address]
  268. :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
  269. } else {
  270. :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
  271. :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$gateDEF disabled=no];
  272. /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
  273. :set newIPdyn [/file get myip.txt contents]
  274. }
  275. }
  276.  
  277. :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
  278. :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
  279. :local oldIPdyn2 $oldIPdyn
  280. :set oldIPdyn $newIPdyn
  281. /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
  282. src-path="$pathDynSerwer$newIPdyn" keep-result=no
  283.  
  284. :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
  285. }
  286.  
  287. :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
  288. :foreach m in=[:toarray $smtpMailDO] do={
  289. :log info "MAIL --> $m";
  290. /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";
  291. }
  292. }
  293. :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
  294. :foreach usb in=[/port find] do={
  295. :if ([/port get $usb name]=$modemUSB) do={
  296. :foreach n in=[:toarray $smsDO] do={
  297. :log info "SMS --> $n";
  298. /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
  299. }
  300. }
  301. }
  302. }
  303. } else {
  304. :set log "Ping OK: Chwile temu byl restart MT."; :log warning $log;
  305. :set LACZE "DOMYSLNE";
  306. :set CZEKAJ "";
  307.  
  308.  
  309. ### START ## URUCHAMIA PRZY STARCIE SYSTEMU - PRACUJE CIAGE NA DOMYSLNYM LACZU
  310. ### END ## URUCHAMIA PRZY STARCIE SYSTEMU - PRACUJE CIAGE NA DOMYSLNYM LACZU
  311.  
  312.  
  313.  
  314. :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
  315. :set newIPdyn [/ip address get [find interface=$interDEF disabled=no] value-name=address]
  316. :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
  317. } else {
  318. :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
  319. :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$gateDEF disabled=no];
  320. /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
  321. :set newIPdyn [/file get myip.txt contents]
  322. }
  323. }
  324.  
  325. :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
  326. :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
  327. :local oldIPdyn2 $oldIPdyn
  328. :set oldIPdyn $newIPdyn
  329. /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
  330. src-path="$pathDynSerwer$newIPdyn" keep-result=no
  331.  
  332. :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
  333. }
  334.  
  335. :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
  336. :foreach m in=[:toarray $smtpMailDO] do={
  337. :log info "MAIL --> $m";
  338. /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";
  339. }
  340. }
  341. :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
  342. :foreach usb in=[/port find] do={
  343. :if ([/port get $usb name]=$modemUSB) do={
  344. :foreach n in=[:toarray $smsDO] do={
  345. :log info "SMS --> $n";
  346. /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
  347. }
  348. }
  349. }
  350. }
  351. }
  352. }
  353. quit;
  354.  
  355. ## PING ERROR
  356. } else={ :if (!($LACZE = "ZAPASOWE" or $LACZE = "DOMYSLNE")) do={
  357. :if (120 < $upSeconds) do={
  358. :set log "Ping ERROR: Przelaczanie na zapasowe lacze...";
  359. } else={
  360. :set log "Ping ERROR: Chwile temu byl restart MT. Przelaczanie na zapasowe lacze...";
  361. }
  362. :log error $log;
  363. :set LACZE "ZAPASOWE";
  364. :set CZEKAJ "";
  365.  
  366. :if ($gateTRAS != $gateNEX) do={
  367.  
  368. :if ("$gateNEX" = "$[:toip $gateNEX]") do={
  369. :local zmien [/ip route set [find comment="trasa-neta"] gateway=$gateNEX disabled=no];
  370. }
  371.  
  372.  
  373. ### START ## URUCHAMIA PRZY STARCIE SYSTEMU ORAZ PRZELACZANIU NA ZAPASOWE LACZE
  374. ### END ## URUCHAMIA PRZY STARCIE SYSTEMU ORAZ PRZELACZANIU NA ZAPASOWE LACZE
  375.  
  376.  
  377. :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
  378. :set newIPdyn [/ip address get [find interface=$interNEX disabled=no] value-name=address]
  379. :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
  380. } else {
  381. :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
  382. :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$interNEX disabled=no];
  383. /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
  384. :set newIPdyn [/file get myip.txt contents]
  385. }
  386. }
  387.  
  388. :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
  389. :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
  390. :local oldIPdyn2 $oldIPdyn
  391. :set oldIPdyn $newIPdyn
  392. /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
  393. src-path="$pathDynSerwer$newIPdyn" keep-result=no
  394.  
  395. :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
  396. }
  397.  
  398. :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
  399. :foreach m in=[:toarray $smtpMailDO] do={
  400. :log info "MAIL --> $m";
  401. /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";
  402. }
  403. }
  404. :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
  405. :foreach usb in=[/port find] do={
  406. :if ([/port get $usb name]=$modemUSB) do={
  407. :foreach n in=[:toarray $smsDO] do={
  408. :log info "SMS --> $n";
  409. /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
  410. }
  411. }
  412. }
  413. }
  414. }
  415. quit;
  416. }}
  417. ### END # PO RESTARCIE
  418.  
  419.  
  420.  
  421.  
  422.  
  423. ### START # LACZE DOMYSLNE & ZAPASOWE
  424. ### NA ZAPASOWE
  425. :if ($ilePingOK > $ping1 and $ilePingOK > $ping2 and $LACZE = "DOMYSLNE") do={
  426.  
  427. ########## ADRESY NA SZTYWNO
  428. :if ("$rodzajNEX" = "static" or "$CZEKAJ" = "1") do={
  429. :set log "Ping ERROR: Przelaczanie na zapasowe lacze..."; :log error $log;
  430. :set LACZE "ZAPASOWE";
  431. :set CZEKAJ "";
  432.  
  433. :if ("$gateTRAS" != "$gateNEX") do={
  434.  
  435. :if ("$gateNEX" = "$[:toip $gateNEX]") do={
  436. :local zmien [/ip route set [find comment="trasa-neta"] gateway=$gateNEX disabled=no];
  437. }
  438.  
  439.  
  440. ### START ## URUCHAMIA PRZY PRZELACZANIU NA ZAPASOWE LACZE
  441. ### END ## URUCHAMIA PRZY PRZELACZANIU NA ZAPASOWE LACZE
  442.  
  443.  
  444. :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
  445. :set newIPdyn [/ip address get [find interface=$interNEX disabled=no] value-name=address]
  446. :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
  447. } else {
  448. :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
  449. :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$interNEX disabled=no];
  450. /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
  451. :set newIPdyn [/file get myip.txt contents]
  452. }
  453. }
  454.  
  455. :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
  456. :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
  457. :local oldIPdyn2 $oldIPdyn
  458. :set oldIPdyn $newIPdyn
  459. /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
  460. src-path="$pathDynSerwer$newIPdyn" keep-result=no
  461.  
  462. :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
  463. }
  464.  
  465. :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
  466. :foreach m in=[:toarray $smtpMailDO] do={
  467. :log info "MAIL --> $m";
  468. /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";
  469. }
  470. }
  471. :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
  472. :foreach usb in=[/port find] do={
  473. :if ([/port get $usb name]=$modemUSB) do={
  474. :foreach n in=[:toarray $smsDO] do={
  475. :log info "SMS --> $n";
  476. /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
  477. }
  478. }
  479. }
  480. }
  481. }
  482.  
  483.  
  484. ########## ADRESY NA AUTO - DHCP, PPPOE, PPP
  485. } else {
  486. :local ping1NEX 0;
  487. :local ping2NEX 0;
  488.  
  489. if ("$iNEXr" = "true" or $iNEXr = true) do={
  490. :set ping1NEX [/ping $pingIP1 count=$ilePingow interface=$interNEX]
  491. :if (!("$pingIP2" = "false" or $pingIP2 = false)) do={
  492. :set ping2NEX [/ping $pingIP2 count=$ilePingow interface=$interNEX]
  493. } else={
  494. :set ping2NEX $ping1NEX
  495. }
  496. }
  497.  
  498.  
  499. ################# BRAK PINGA NA ZAPASOWYM LACZU - RESTART INTEREJSU
  500. :if ($ilePingOK > $ping1NEX and $ilePingOK > $ping2NEX) do={
  501. :if ($rodzajNEX="dhcp") do={
  502. :local odswiez [/ip dhcp-client release [find interface=$interNEX]]
  503. } else={
  504. :if ($rodzajNEX="pppoe") do={
  505. :local odswiez [/interface pppoe-client disable [find name=$interNEX]]
  506. :local odswiez [/interface pppoe-client enable [find name=$interNEX]]
  507. } else={
  508. :if ($rodzajNEX="ppp") do={
  509. :local odswiez [/interface ppp-client disable [find name=$interNEX]]
  510. :local odswiez [/interface ppp-client enable [find name=$interNEX]]
  511. }
  512. }
  513. }
  514. :set CZEKAJ 1;
  515.  
  516.  
  517. ################# PING OK NA ZAPASOWYM LACZU
  518. } else {
  519. :set log "Ping ERROR: Przelaczanie na zapasowe lacze..."; :log error $log;
  520. :set LACZE "ZAPASOWE";
  521. :set CZEKAJ "";
  522.  
  523. :if ("$gateTRAS" != "$gateNEX") do={
  524.  
  525. :if ("$gateNEX" = "$[:toip $gateNEX]") do={
  526. :local zmien [/ip route set [find comment="trasa-neta"] gateway=$gateNEX disabled=no];
  527. }
  528.  
  529.  
  530. ### START ## URUCHAMIA PRZY PRZELACZANIU NA ZAPASOWE LACZE
  531. ### END ## URUCHAMIA PRZY PRZELACZANIU NA ZAPASOWE LACZE
  532.  
  533.  
  534. :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
  535. :set newIPdyn [/ip address get [find interface=$interNEX disabled=no] value-name=address]
  536. :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
  537. } else {
  538. :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
  539. :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$interNEX disabled=no];
  540. /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
  541. :set newIPdyn [/file get myip.txt contents]
  542. }
  543. }
  544.  
  545. :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
  546. :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
  547. :local oldIPdyn2 $oldIPdyn
  548. :set oldIPdyn $newIPdyn
  549. /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
  550. src-path="$pathDynSerwer$newIPdyn" keep-result=no
  551.  
  552. :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
  553. }
  554.  
  555. :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
  556. :foreach m in=[:toarray $smtpMailDO] do={
  557. :log info "MAIL --> $m";
  558. /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";
  559. }
  560. }
  561. :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
  562. :foreach usb in=[/port find] do={
  563. :if ([/port get $usb name]=$modemUSB) do={
  564. :foreach n in=[:toarray $smsDO] do={
  565. :log info "SMS --> $n";
  566. /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
  567. }
  568. }
  569. }
  570. }
  571. }
  572.  
  573. }
  574. }
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581. ### NA DOMYSLNE
  582. } else={ :if ($LACZE = "ZAPASOWE") do={
  583.  
  584. ########## ADRESY NA SZTYWNO
  585. :if ("$rodzajDEF" = "static" or "$CZEKAJ" = "1") do={
  586. :if ($ilePingOK < $ping1 and $ilePingOK < $ping2 and $LACZE = "ZAPASOWE") do={
  587. :set log "Ping OK: Przelaczanie na domyslne lacze..."; :log warning $log;
  588. :set LACZE "DOMYSLNE";
  589. :set CZEKAJ "";
  590.  
  591. :if ($gateTRAS != $gateDEF) do={
  592.  
  593. :if (($gateDEF=[:toip $gateDEF]) and "$gateDEF" != "1.1.1.1" and "$gateTRAS" != "2.2.2.2") do={
  594. :local zmien [/ip route set [find comment="trasa-neta"] gateway=$gateDEF disabled=no];
  595. }
  596.  
  597.  
  598. ### START ## URUCHAMIA PRZY PRZELACZANIU NA DOMYSLNE LACZE
  599. ### END ## URUCHAMIA PRZY PRZELACZANIU NA DOMYSLNE LACZE
  600.  
  601.  
  602. :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
  603. :set newIPdyn [/ip address get [find interface=$interDEF disabled=no] value-name=address]
  604. :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
  605. } else {
  606. :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
  607. :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$gateDEF disabled=no];
  608. /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
  609. :set newIPdyn [/file get myip.txt contents]
  610. }
  611. }
  612.  
  613. :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
  614. :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
  615. :local oldIPdyn2 $oldIPdyn
  616. :set oldIPdyn $newIPdyn
  617. /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
  618. src-path="$pathDynSerwer$newIPdyn" keep-result=no
  619.  
  620. :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
  621. }
  622.  
  623. :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
  624. :foreach m in=[:toarray $smtpMailDO] do={
  625. :log info "MAIL --> $m";
  626. /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";
  627. }
  628. }
  629. :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
  630. :foreach usb in=[/port find] do={
  631. :if ([/port get $usb name]=$modemUSB) do={
  632. :foreach n in=[:toarray $smsDO] do={
  633. :log info "SMS --> $n";
  634. /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
  635. }
  636. }
  637. }
  638. }
  639. }
  640. } else {
  641. :set log "Ping ERROR: Praca na awaryjnym laczu..."; :log error $log;
  642. }
  643.  
  644. ########## ADRESY NA AUTO - DHCP, PPPOE, PPP
  645. } else {
  646.  
  647. ################# BRAK PINGA NA DOMYSLNYM LACZU - RESTART INTEREJSU
  648. :if ($ilePingOK > $ping1 and $ilePingOK > $ping2 and $LACZE = "ZAPASOWE") do={
  649. :set log "Ping ERROR: Praca na awaryjnym laczu..."; :log error $log;
  650.  
  651. :if ($rodzajDEF="dhcp") do={
  652. :local odswiez [/ip dhcp-client release [find interface=$interDEF]]
  653. } else={
  654. :if ($rodzajDEF="pppoe") do={
  655. :local odswiez [/interface pppoe-client disable [find name=$interDEF]]
  656. :local odswiez [/interface pppoe-client enable [find name=$interDEF]]
  657. } else={
  658. :if ($rodzajDEF="ppp") do={
  659. :local odswiez [/interface ppp-client disable [find name=$interDEF]]
  660. :local odswiez [/interface ppp-client enable [find name=$interDEF]]
  661. }
  662. }
  663. }
  664. :set CZEKAJ 1;
  665.  
  666.  
  667. ################# PING OK NA DOMYSLNYM LACZU
  668. } else {
  669. :set log "Ping OK: Przelaczanie na domyslne lacze..."; :log warning $log;
  670. :set LACZE "DOMYSLNE";
  671. :set CZEKAJ "";
  672.  
  673. :if ($gateTRAS != $gateDEF) do={
  674.  
  675. :if (($gateDEF=[:toip $gateDEF]) and "$gateDEF" != "1.1.1.1" and "$gateTRAS" != "2.2.2.2") do={
  676. :local zmien [/ip route set [find comment="trasa-neta"] gateway=$gateDEF disabled=no];
  677. }
  678.  
  679.  
  680. ### START ## URUCHAMIA PRZY PRZELACZANIU NA DOMYSLNE LACZE
  681. ### END ## URUCHAMIA PRZY PRZELACZANIU NA DOMYSLNE LACZE
  682.  
  683.  
  684. :if ("$IPzNeta" = "false" or $IPzNeta = false) do={
  685. :set newIPdyn [/ip address get [find interface=$interDEF disabled=no] value-name=address]
  686. :set newIPdyn [:pick $newIPdyn 0 [:find $newIPdyn "/"]]
  687. } else {
  688. :if ("$IPzNeta" = "true" or $IPzNeta = true) do={
  689. :local zmien [/ip route set [find comment="trasa-get-ip"] gateway=$gateDEF disabled=no];
  690. /tool fetch mode=http address="$urlGetIP" host="$urlGetIP" src-path="/" dst-path="/myip.txt"
  691. :set newIPdyn [/file get myip.txt contents]
  692. }
  693. }
  694.  
  695. :if (("$dynDNS" = "true" or $dynDNS = true) and "$newIPdyn" != "$oldIPdyn") do={
  696. :if (!("$protDynSerwer" = "http" or "$protDynSerwer" = "https")) do={ :set protDynSerwer "http"; }
  697. :local oldIPdyn2 $oldIPdyn
  698. :set oldIPdyn $newIPdyn
  699. /tool fetch user="$dynUser" password="$dynPasswd" mode="$protDynSerwer" address="$hostDynSerwer" host="$hostDynSerwer" \
  700. src-path="$pathDynSerwer$newIPdyn" keep-result=no
  701.  
  702. :log warning "Dyn: Zmiana IP dla $dynHost z $oldIPdyn2 na $newIPdyn"
  703. }
  704.  
  705. :if (("$powiadomienieMail" = "true" or $powiadomienieMail = true) and $smtpMailDO != "") do={
  706. :foreach m in=[:toarray $smtpMailDO] do={
  707. :log info "MAIL --> $m";
  708. /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";
  709. }
  710. }
  711. :if (("$powiadomienieSMS" = "true" or $powiadomienieSMS = true) and $smsDO != "") do={
  712. :foreach usb in=[/port find] do={
  713. :if ([/port get $usb name]=$modemUSB) do={
  714. :foreach n in=[:toarray $smsDO] do={
  715. :log info "SMS --> $n";
  716. /tool sms send $modemUSB $n channel=1 message="$[/system identity get name] - $[/system clock get time] $[/system clock get date] - $log Aktualne IP: $newIPdyn";
  717. }
  718. }
  719. }
  720. }
  721. }
  722. }
  723.  
  724. }
  725. }}
  726. ### END # LACZE DOMYSLNE & ZAPASOWE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement