## Fox RouterOS System & Firmware Updater :local UpdateChannel "long-term"; :local DeviceName [/system identity get name ]; :local UpdateFirmware true; :local Model; :local Arch; ## Initiate Check on RouterOS Arch :onerror e { :set Model [/system routerboard get model ]; :set Arch true; } do={ :set Arch false; } ## End RouterOS Arch Check ## Update RouterOS :log info ("Checking RouterOS status..."); /system package update set channel=$UpdateChannel check-for-updates # Wait on slow connections :delay 60s; :local SystemVer [/system package update get installed-version ]; :local UpstreamVer [/system package update get latest-version ]; :local Status [/system package update get status ]; :local Channel [/system package update get channel ]; :log info ("System of $DeviceName is $SystemVer"); :if ($SystemVer != $UpstreamVer) do={ # New version of RouterOS available :log info ("New version is available ( channel: $Channel )."); :log info ("System update: $SystemVer => $UpstreamVer"); :log info ("Preparing to update system..."); # Wait for system email log timer :delay 210s; :log info ("Start updating :) "); :delay 90s; install } else={ # No RouterOS update available, nothing to do, just log info :log info ("$Status."); } ## End Update RouterOS ## Upgrade RouterBOARD Firmware :if ($Arch) do={ :if ($UpdateFirmware) do={ :log info ("Checking RouterBOARD status..."); /system routerboard :local SystemFirmware [/system routerboard get current-firmware ]; :local UpstreamFirmware [/system routerboard get upgrade-firmware ]; :log info ("Firmware of $DeviceName is $SystemFirmware"); :if ($SystemFirmware != $UpstreamFirmware) do={ # New version of firmware available :log info ("New version is available ( $Model )."); :log info ("Firmware upgrade: $SystemFirmware => $UpstreamFirmware"); upgrade # Firmware upgraded, need to reboot to finish :log info ("A firmware reboot is required."); :delay 210s; :log info ("Start rebooting :) "); :delay 90s; /system reboot } else={ # No firmware upgrade available, log info :log info ("Firmware is already up to date."); } } else={ # Automatic firmware upgrade disabled, log info :log info ("Firmware automatic upgrades disabled."); } } ## End Upgrade RouterBOARD Firmware ## End Fox RouterOS System & Firmware Updater