Не работает скрипт переключения на 3g модем
Добавлено: 20 ноя 2023, 23:25
Нашёл в интернете скрипт переключения на 3г модем при отсутствии интернета, переписал под себя и при запуске оно выдаёт ошибку syntax error (line 52 column 89) помогите исправить...
вместо example.ru мой домен на котором лижет скрипт отправки уведомлений в телеграмм (микротик всё ещё не умеет в ру символы, поэтому работает мой скрипт)
Версия ROS 6.49.7
вместо example.ru мой домен на котором лижет скрипт отправки уведомлений в телеграмм (микротик всё ещё не умеет в ру символы, поэтому работает мой скрипт)
Версия ROS 6.49.7
Код: Выделить всё
:local firstInterface "ether5";
:local secondInterface "ppp-out1";
:local pingTo1 "8.8.8.8";
:local pingTo2 "77.88.8.8";
:local pingCount 3;
:local stableConnectFrom 60;
:local firstInterfaceName $firstInterface;
:local secondInterfaceName $secondInterface;
:local clearArp do={
:local dumplist [/ip arp find]
:foreach i in=$dumplist do={
/ip arp remove $i
}
:log warning ("ARP cleaned");
}
:local reconnect3G do={
:log warning ("Rebooting 3G before using");
/interface ppp-client set $nameInterface disable=yes;
:delay 1s;
/interface ppp-client set $nameInterface disable=no;
}
:log info ("Start ping to $pingTo1 and $pingTo2");
/interface ethernet {
:if ( [get $firstInterface disable] = true) do={
set $firstInterface disable=no;
:delay 2s;
}
}
# Check SECOND interface
/interface ppp-client {
:if ( [get $secondInterface disable] = true) do={
set $secondInterface disable=no;
:delay 8s;
}
}
/ip route {
# Set objects to variables
:set firstInterface [find dst-address="0.0.0.0/0" gateway=$firstInterfaceName];
:set secondInterface [find dst-address="0.0.0.0/0" gateway=$secondInterfaceName];
# Check routes
:if ( [get $firstInterface distance] != 2 ) do={
set $firstInterface distance=2;
:log warning ("Distance for " . $firstInterfaceName . " corrected");
}
:if ( [get $secondInterface distance] != 1 && [get $secondInterface distance] != 3) do={
set $secondInterface distance=3;
:log warning ("Distance for " . $secondInterfaceName . " corrected");
}
:local pingStatus \
((( [/ping $pingTo1 interface=$firstInterfaceName count=$pingCount] + \
[/ping $pingTo2 interface=$firstInterfaceName count=$pingCount] ) / ($pingCount * 2)) *
100);
:if ($pingStatus < $stableConnectFrom) do={
:log error ("RTK no internet!");
:if ( [get $secondInterface distance] != 1 ) do={
$reconnect3G nameInterface=$secondInterfaceName;
set $secondInterface distance=1;
:log warning ("Distance for " . $secondInterfaceName . " changed");
$clearArp;
:execute {/tool fetch url="http://example.ru/off.php" keep-result=no}
}
} else={
:log warning ("RTK connected");
:if ( [get $secondInterface distance] != 3 ) do={
:execute {/tool fetch url="http://example.ru/on.php" keep-result=no}
set $secondInterface distance=3;
:log warning ("Distance for " . $secondInterfaceName . " changed");
$clearArp;
}
}
}
:log info ("End ping");