Есть задача запустить скрипт при запуске 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
В последней строке запускаем нужным нам скрипт.