Improved Netwatch - MikroTik Script RouterOS

This is an improved version of Netwatch that removes false positives. It works by pinging the target IP 5 times. If all 5 time out then the specified action is taken.

:local i 0; {:do {:set i ($i + 1)} while (($i < 5) && ([/ping 72.14.207.104 interval=3 count=1]=0))};
:if ($i=5 && [/ip route get [find comment="Default Route"] disabled]=false) do={:log info "Main Gateway down"; 
 /ip route set [find comment="Default Route"] disabled=yes}
In this case it searches for a route labelled "Default Route" and disables it if 5 pings in a row to www.google.com time out. To re-enable on 5 succesfull pings you could have some thing like:

:local i 0; {:do {:set i ($i + 1)} while (($i < 5) && ([/ping 72.14.207.104 interval=3 count=1]=1))}; 
:if ($i=5 && [/ip route get [find comment="Default Route"] disabled]=true) do={:log info "Main Gateway up"; 
/ip route set [find comment="Default Route"] disabled=no}
ping return number of recieved packets (at last on latest 3.x and щт 4.x). Next do same

:if ([/ping 72.14.207.104 interval=3 count=5]=5 && [/ip route get [find comment="Default Route"] disabled]=false) do={
:log info "Main Gateway down"; /ip route set [find comment="Default Route"] disabled=yes}
Credit: wiki.mikrotik.com