Есть задача запустить скрипт при запуске Mikrotik, например отправка бекапа. Но для инициализации модема USB нужно время и скрипт просто не сработает.
Для этого сделаем стартовый скрипт где будем ожидать модем, после чего запустим уже наш скрипт. Всё логируем.
:log info "Запускаю скрипт ожидания lte"
:local waited 0
:local maxWait 600
:local ifaceFound false
:local dhcpBound false
:while ($waited < $maxWait) do={
:if ([:len [/interface find where name="lte1"]] > 0) do={
:log warning "Интерфейс lte1 найден"
:set ifaceFound true
:log warning "Переходим к DHCP"
:delay 1
:set waited $maxWait
} else={
:delay 5
:set waited ($waited + 5)
:log warning "lte1 ещё не появился, жду... ($waited сек)"
}
}
:if (!$ifaceFound) do={
:log warning "lte1 не появился за $maxWait секунд"
:return
}
:set waited 0
:while ($waited < $maxWait) do={
:foreach i in=[/ip dhcp-client find where interface="lte1"] do={
:if ([/ip dhcp-client get $i status] = "bound") do={
:log warning ("lte1 получил IP: " . [/ip dhcp-client get $i address])
:set dhcpBound true
}
}
:if ($dhcpBound) do={
:log warning "DHCP успешно, запускаю buckup"
:set waited $maxWait
} else={
:delay 5
:set waited ($waited + 5)
:log warning "DHCP ещё не bound, жду... ($waited сек)"
}
}
:if (!$dhcpBound) do={
:log warning "lte1 не получил IP за $maxWait секунд"
:return
}
:log warning "Интерфейс найден, запускаем бекап..."
/system script run buckup
В последней строке запускаем нужным нам скрипт.