У меня RouterOS 5.14 на RB493G. Мне нужно написать сценарий, который запускает
/tool fetch ...
Выполнение выборки может привести к ошибке, это нормально (иногда URL-адрес может быть недоступен). Скрипт зависает при ошибке. Есть ли способ проигнорировать это?
Решение:
[admin@Mikrotik] >> /system script
0 name=safe-fetch source=
:global done
:global url
/tool fetch $url
:Set done=true
1 name=test source=
:global done
:global url="google.com"
:set done false
:execute safe-fetch
:local counter 0
:while ( $done != true && $counter < 10 ) do={
:set counter ($counter+1)
:delay 0.2
}
if ($done = "true") do={
:put "Fetch OK"
} else={
:put "Fetch ERROR"
}
Предупреждение: используется недокументированное ": выполнить".
Теперь вы можете создать do
блок с обработчиком ошибок:
:do {
/tool fetch $url
:put "Fetch OK"
} on-error={ :put "Fetch ERROR"};
Кажется, что нет обработки ошибок в такого рода скриптах. Вам, вероятно, следует принять решение, предложенное этот парень:
Таким образом, у вас должно быть 2 сценария, один из которых запускается, выполняет различные действия и обрабатывает ситуацию, когда какое-то значение не получено должным образом, а другой сценарий выполняет работу, которая может завершиться ошибкой. в результате, если второй сценарий терпит неудачу, то первый, который вызвал второй сценарий для выполнения работы, продолжит работу.