Auto upgrade MikroTik RouterOS & Firmware

By | 8.3.2021
  • Script pro automatický upgrade RouterOS a Firmware s upozorněním na e-mail
  • Stačí vložit do Schelduleru nebo do Scripts
:local FWcurrent [/system routerboard get current-firmware]
:local FWupgrade [/system routerboard get upgrade-firmware]
:local RBname [/system identity get name]
:local d [/system clock get date]
:local t [/system clock get time]
### Pro upgrade ROS
/system package update
check-for-updates once
:delay 3s
:if ( [get status] = "New version is available") \
do={ \
:log info "Nova verze ROS je dostupna, stahuji..." 
:tool e-mail send to=muj@mail.cz subject="Upgrade RoS - $n" body="$n - $t $d"
install 
:log info "Restartuji..." 
} \
else={ \
:log info "Aktualni ROS, kontroluji aktualnost Firmware..." 
### Pro upgrade Firmware
:if ($FWcurrent = $FWupgrade) \
       do={ \
      :log info "Aktualni Firmware" \
       } \
      else={ \
      :log info "Neaktualni Firmware" 
      :delay 2 
      :log info "Nastavuji upgrade" 
      /system routerboard upgrade
      :delay 10 
      :log info "Restartuji..."
      /system reboot
      } 
} 

Kompletní kod, bez upozornění na e-mail do terminálu pro vložení Schelduleru se spuštěním po startu s opakováním každý týden

/system scheduler
add interval=1w name="upgrade ROS" on-event=":local FWcurrent [/system routerboard get current-firmware]\r\
 \n:local FWupgrade [/system routerboard get upgrade-firmware]\r\
 \n### Pro upgrade ROS\r\
 \n/system package update\r\
 \ncheck-for-updates once\r\
 \n:delay 3s\r\
 \n:if ( [get status] = \"New version is available\") \\\r\
 \ndo={ \\\r\
 \n:log info \"Nova verze ROS je dostupna, stahuji...\" \r\
 \ninstall \r\
 \n:log info \"Restartuji...\" \r\
 \n} \\\r\
 \nelse={ \\\r\
 \n:log info \"Aktualni ROS, kontroluji aktualnost Firmware...\" \r\
 \n### Pro upgrade Firmware\r\
 \n:if (\$FWcurrent = \$FWupgrade) \\\r\
 \n do={ \\\r\
 \n :log info \"Aktualni Firmware\" \\\r\
 \n } \\\r\
 \n else={ \\\r\
 \n :log info \"Neaktualni Firmware\" \r\
 \n :delay 2 \r\
 \n :log info \"Nastavuji upgrade\" \r\
 \n /system routerboard upgrade\r\
 \n :delay 10 \r\
 \n :log info \"Restartuji...\"\r\
 \n /system reboot\r\
 \n } \r\
 \n} \r\
 \n" policy=reboot,read,write,policy,test,password,sensitive start-time=startup

5 thoughts on “Auto upgrade MikroTik RouterOS & Firmware

  1. Pepa

    Dobrý den,
    když vložím tento kod do skriptu na mikrotik tak mi to udělá z verze 6.48 na verzi 6.49 a ne na verzi 7.2.1 a udělá to jen Upgrade a ne update FW
    do scheduleru jsem dal:
    name: upgrade
    Start time: ……
    interval: 15d 00:00:00
    /system script run upgrade

    a do skriptu:
    name: upgrade
    plus celý skript viz níže s vlastním emailem

    :local FWcurrent [/system routerboard get current-firmware]
    :local FWupgrade [/system routerboard get upgrade-firmware]
    :local RBname [/system identity get name]
    :local d [/system clock get date]
    :local t [/system clock get time]
    ### Pro upgrade ROS
    /system package update
    check-for-updates once
    :delay 3s
    :if ( [get status] = „New version is available“) \
    do={ \
    :log info „Nova verze ROS je dostupna, stahuji…“
    :tool e-mail send to=muj@mail.cz subject=“Upgrade RoS – $n“ body=“$n – $t $d“
    install
    :log info „Restartuji…“
    } \
    else={ \
    :log info „Aktualni ROS, kontroluji aktualnost Firmware…“
    ### Pro upgrade Firmware
    :if ($FWcurrent = $FWupgrade) \
    do={ \
    :log info „Aktualni Firmware“ \
    } \
    else={ \
    :log info „Neaktualni Firmware“
    :delay 2
    :log info „Nastavuji upgrade“
    /system routerboard upgrade
    :delay 10
    :log info „Restartuji…“
    /system reboot
    }
    }

    Jo a co ten druhý skript,když budu chtít ten vložím taky celý a kam?

    /system scheduler
    add interval=1w name=“upgrade ROS“ on-event=“:local FWcurrent [/system routerboard get current-firmware]\r\
    \n:local FWupgrade [/system routerboard get upgrade-firmware]\r\
    \n### Pro upgrade ROS\r\
    \n/system package update\r\
    \ncheck-for-updates once\r\
    \n:delay 3s\r\
    \n:if ( [get status] = \“New version is available\“) \\\r\
    \ndo={ \\\r\
    \n:log info \“Nova verze ROS je dostupna, stahuji…\“ \r\
    \ninstall \r\
    \n:log info \“Restartuji…\“ \r\
    \n} \\\r\
    \nelse={ \\\r\
    \n:log info \“Aktualni ROS, kontroluji aktualnost Firmware…\“ \r\
    \n### Pro upgrade Firmware\r\
    \n:if (\$FWcurrent = \$FWupgrade) \\\r\
    \n do={ \\\r\
    \n :log info \“Aktualni Firmware\“ \\\r\
    \n } \\\r\
    \n else={ \\\r\
    \n :log info \“Neaktualni Firmware\“ \r\
    \n :delay 2 \r\
    \n :log info \“Nastavuji upgrade\“ \r\
    \n /system routerboard upgrade\r\
    \n :delay 10 \r\
    \n :log info \“Restartuji…\“\r\
    \n /system reboot\r\
    \n } \r\
    \n} \r\
    \n“ policy=reboot,read,write,policy,test,password,sensitive start-time=startup

    Reply
    1. chury721 Post author

      Ano, skript je pro v6, upgrade firmware udělá při dalším spuštění skriptu (zjistí že je aktuální verze RoS a provede upgrade).
      Druhý kod stačí zkopírovat a jen ho vložit (popř. odEnterovat) do terminálu a vše se naimportuje.

      Reply
      1. Pepa

        díky jde tam nahrát když je pro verzi 6 a já tam mám verzi v mikrotiku 7 bude updatovat zase 7?

        díky moc

      2. chury721 Post author

        Zatím ještě nikde nemám nasazenou v7, až budu, určitě budu script aktualizovat.

  2. Pepa

    díky jde tam nahrát když je pro verzi 6 a já tam mám verzi v mikrotiku 7 bude updatovat zase 7?

    Reply

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *