parscon
October 20, 2014, 10:56am
1
How can i use shorter script than this ?
Thank you very much
:if ([/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.40 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.42 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.44 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.46 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.48 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.50 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.52 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.54 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.56 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.58 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.60 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.62 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.64 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.66 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.68 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.70 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.72 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.74 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.76 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.78 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.80 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.82 count=1] = 1 ||
[/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.84 count=1] = 1) do={
/ip route set [/ip route find comment="Default-Route-->L1"] disabled=yes;
:delay 15s;
/ip route set [/ip route find comment="Default-Route-->L1"] disabled=no;
:delay 15s;
} else {
:if ([/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.38 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.42 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.44 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.46 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.48 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.50 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.52 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.54 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.56 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.58 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.60 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.62 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.64 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.66 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.68 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.70 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.72 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.74 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.76 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.78 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.80 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.82 count=1] = 1 ||
[/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.84 count=1] = 1) do={
/ip route set [/ip route find comment="Default-Route-->L2"] disabled=yes;
:delay 15s;
/ip route set [/ip route find comment="Default-Route-->L2"] disabled=no;
:delay 15s;
}
}
My script to check if router can reach GoogleDNS and log the ping result.
Global GoogleUp variable holds the current state.
:local ServerGoogle "8.8.8.8"
:local i 0
:local F 0
:local LinkChanged
:local PingOK
:global GoogleUp
:if ([:typeof $GoogleUp] = "nothing") do={:set GoogleUp false}
# PING host 5 times delay 4s
:for i from=1 to=5 do={
if ([/ping $ServerGoogle count=1 interval=4s]=0) do={:set F ($F + 1)}
};
:set PingOK (!($F=5))
# If links are down and all replies are timedouted, then link is considered down
:set LinkChanged (($GoogleUp and !$PingOK) or (!$GoogleUp and $PingOK))
:set GoogleUp $PingOK
:if ($LinkChanged) do={
:local komunikat "GOOGLE: $[/system identity get name], $[/system clock get time], $[/system clock get date], $[/ip address get [find interface=ETH1-WAN] address] - "
:if ( $GoogleUp ) do={
:set komunikat ($komunikat . "UP")
} else={
:set komunikat ($komunikat . "DOWN")
}
:log info $komunikat
}
parscon
October 20, 2014, 11:40am
3
Thanks for your reply but it is not the things that i need .
Why not ? Change the for loop…I am writing this without checking but please just follow the idea…look at $i in 10.0.1.$i
:for i from=40 to=84 step=2 do={
if( [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.$i count=1] = 1 ) do={
# increment here some counter variable, lets say RouteL1
}
};
if( $RouteL1 is not what you expect ) do={
# action for RouteL1
}
......etc....
parscon
October 20, 2014, 12:21pm
5
Thank you very much i will check and reply back.
You can also make an array of hosts’ addresses to ping in the script or in “/ip firewall” and then traverse it with
:foreach <var> in=<array> do={ <commands> };
instead of calculated for loop.
parscon
October 20, 2014, 12:42pm
7
I made script like this but does not work . could you please check why ?
Thanks for your help
:for i from=40 to=84 step-2 do={
if( [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1 && [/ping 10.0.1.$i count=1] = 1 ) do={
/ip route set [/ip route find comment="Default-Route-->L3"] disabled=no;
} else {
/ip route set [/ip route find comment="Default-Route-->L3"] disabled=yes;
}
}
};
Sorry for my syntax mistakes but it was just the idea…too many perenthesis, bad :if syntax, wrong ping invocation…this snippet works so please modify it to your needs
:local i 0;
:for i from=4 to=16 step=4 do={
:log info "192.168.$i.1"
:if ( [/ping "192.168.$i.1" count=1]=1 ) do={
:log info ("OK");
} else={
:log info ("NOT OK");
}
};
Thank you very much and it is work fine and now i have another request , how can i short this script :
Government in my country drop routes each 15 second so i need change my routes every 15 seconds and this script work fine but the problem is i have 30 route and in script section i can use 10 routes as limitation of script section in mikrotik , So if you can please help me .
And if you can .i need a script that find only enable routes and when finds each 15 second change routes.
:if (([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
/ip route { disable [find comment="Default-Route-->L11"]};
:delay 15s;
/ip route { enable [find comment="Default-Route-->L11"]};
:delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
/ip route { disable [find comment="Default-Route-->L12"]};
:delay 15s;
/ip route { enable [find comment="Default-Route-->L12"]};
:delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
/ip route { disable [find comment="Default-Route-->L13"]};
:delay 15s;
/ip route { enable [find comment="Default-Route-->L13"]};
:delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
/ip route { disable [find comment="Default-Route-->L14"]};
:delay 15s;
/ip route { enable [find comment="Default-Route-->L14"]};
:delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
/ip route { disable [find comment="Default-Route-->L15"]};
:delay 15s;
/ip route { enable [find comment="Default-Route-->L15"]};
:delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
/ip route { disable [find comment="Default-Route-->L16"]};
:delay 15s;
/ip route { enable [find comment="Default-Route-->L16"]};
:delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
/ip route { disable [find comment="Default-Route-->L17"]};
:delay 15s;
/ip route { enable [find comment="Default-Route-->L17"]};
:delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0)) do={
/ip route { disable [find comment="Default-Route-->L18"]};
:delay 15s;
/ip route { enable [find comment="Default-Route-->L18"]};
:delay 15s;
}}}}}}}}}}}}}}
OMG…my eyes…
First of all use variables for constant strings and rewrite the script…will be smaller and more readable…do like this:
..............
([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0)........
to
..........
:local dfL1 "Default-Route-->L1";
:local dfL2 "Default-Route-->L2";
:local dfL3 "Default-Route-->L3";
:local dfL12 "Default-Route-->L12";
..........................
([:len [/ip route find comment=$dfL12 and !disabled]] > 0) && ([:len [/ip route find comment=$dfL1 and !disabled]] > 0) ||
([:len [/ip route find comment=$dfL12 and !disabled]] > 0) && ([:len [/ip route find comment=$dfL2 and !disabled]] > 0) ||
([:len [/ip route find comment=$dfL12 and !disabled]] > 0) && ([:len [/ip route find comment=$dfL3 and !disabled]] > 0).........
and next if default route L12 is not changed in the background during evaluation of this long “if” you could do
...............
:local check_dfL12 ([:len [/ip route find comment=$dfL12 and !disabled]] > 0);
.......
$check_dfL12 && ([:len [/ip route find comment=$dfL1 and !disabled]] > 0) ||
$check_dfL12 && ([:len [/ip route find comment=$dfL2 and !disabled]] > 0) ||
$check_dfL12 && ([:len [/ip route find comment=$dfL3 and !disabled]] > 0).........
and it shows that you are evaluating && and || without parenthesis grouping particular checks so I do not know what the expected effect is ?
parscon
October 21, 2014, 10:32am
11
Really thank you very much . Really saved me .
parscon
October 22, 2014, 8:44am
12
Dear BartoszP
Hope so you are fine
I wrote his code and the problem is no address was specified
could you please write me whats the problem and how can i fix it .
Really Thank you very much
:local RdfL0 192.168.1.12;
:local RdfL1 10.0.1.2;
:local RdfL2 10.0.1.4;
:local dfL1 "Default-Route-->L1";
:local dfL2 "Default-Route-->L2";
:if ( [/ping $RdfL1 count=1] = 0 && [/ping $RdfL0 count=1] = 1 || [/ping $RdfL1 count=1] = 1 && [/ping $RdfL0 count=1] = 0 ) do={
/ip route set [/ip route find comment=$dfL1] disabled=yes;
:if ( [/ping $RdfL2 count=1] = 0 && [/ping $RdfL0 count=1] = 1 || [/ping $RdfL2 count=1] = 1 && [/ping $RdfL0 count=1] = 0 ) do={
/ip route set [/ip route find comment=$dfL2] disabled=yes;
}}
Which part does not work ? :if test ? Nested if ? Route change ? Are pings working ?
Use :log to check which path is executed.
EDIT:
I have written already that your :if test does not use () so it is evaluated from left to right and I do not know if it is proper or not
as “current” result is ored or anded with next check so the result is “cumulating” from left to right.