Dziwnym wstępem napiszę, że nie polecam tego rozwiązania. Lepiej jest znaleźć przyczynę braku komunikacji niż restartować za każdym razem router. Jeżeli jednak się zdecydujesz, to pomocny będzie poniższy skrypt:
/tool netwatch
add down-script=":if ([/ping 8.8.8.8 interval=5 count=10] =0) do={\r\
\nlog error \"Netwatch 8.8.8.8 is down\" ; /system reboot\r\
\n}" host=8.8.8.8 interval=30s timeout=1m30s
Już śpieszę z wyjaśnieniem co ta komenda robi. Do testowania tego, czy router ma prawidłowe połączenie z internetem wykorzystuje publiczny adres IP serwera DNS Google (8.8.8.8). Narzędzie Netwatch sprawdza co 30s dostępność ww serwera. Jeżeli stwierdzi, że serwer nie jest dostępny, to wykonuje down-script
. Skrypt ten zawiera dodatkowe sprawdzenie dostępności serwera. Wysyła do niego 10 pakietów ICMP echo request (ping) każdy co 5 sekund.
/ping 8.8.8.8 interval=5 count=10
Jeżeli na żaden z tych pakietów nie otrzyma odpowiedzi ICMP echo reply, to wykonuje dwie akcje:
Wysyła do loga informację: log error \"Netwatch 8.8.8.8 is down\"
Restartuje urządzenie: /system reboot
Dodatkowym zabezpieczeniem przed przypadkowym restartem routera jest timeout=1m30s
, powoduje to, że narzędzie Netwatch czeka 90 sekund na odpowiedź z serwera Google. Wyklucza to przypadek, gdy router jest w trakcie uruchamiania i jeszcze nie ma połączenia z internetem, a narzędzie Netwatch przy ustawionym timeout=0s
już wykonało by down-script
.
Reasumując, przy obecnych parametrach w przypadku braku odpowiedzi z serwera gogle router zrestartuje się po 140 sekunach (90s. timeout i 10x5s. ping). Wartości te można modyfikować wg. własnych potrzeb.
Koniec 🙂
Jeżeli pomogłem to ,a będę miał więcej energii na pisanie kolejnych ciekawych wpisów.