From a81121d779467338d5000c41b7c9882635d0075a Mon Sep 17 00:00:00 2001 From: Alexander Beeyev Date: Sun, 21 Oct 2018 23:30:22 -0400 Subject: [PATCH] New version Added ability to set backup encryption password and choose update channel. --- Auto-Upgrade/README.md | 4 - Auto-Upgrade/firmware-updater.rsc | 109 --------------------------- README.md | 30 +++++++- firmware-updater.rsc | 119 ++++++++++++++++++++++++++++++ howto/email-config.png | Bin 0 -> 7442 bytes howto/scheduler-task.png | Bin 0 -> 17657 bytes howto/script-name.png | Bin 0 -> 26505 bytes 7 files changed, 146 insertions(+), 116 deletions(-) delete mode 100644 Auto-Upgrade/README.md delete mode 100644 Auto-Upgrade/firmware-updater.rsc create mode 100644 firmware-updater.rsc create mode 100644 howto/email-config.png create mode 100644 howto/scheduler-task.png create mode 100644 howto/script-name.png diff --git a/Auto-Upgrade/README.md b/Auto-Upgrade/README.md deleted file mode 100644 index 05f6fa9..0000000 --- a/Auto-Upgrade/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# MikrtoTik RouterOS automatic firmware update - -## firmware-updater.rsc - diff --git a/Auto-Upgrade/firmware-updater.rsc b/Auto-Upgrade/firmware-updater.rsc deleted file mode 100644 index 6af37f6..0000000 --- a/Auto-Upgrade/firmware-updater.rsc +++ /dev/null @@ -1,109 +0,0 @@ -# Script name: firmware-updater - -########## Set variables -## Notification e-mail -:local emailEnabled true -:local emailAddress "email@example.com" -:local sendBackupToEmail true -########## - - -## !!!! DO NOT CHANGE ANYTHING BELOW THIS LINE !!!! ## - -:global beeUpdateStep; - -## Check for update -/system package update -set channel=current -check-for-updates - -## Wait on slow connections -:delay 15s; - -## First step, check for new updates -:if ([:len $beeUpdateStep] = 0 && [get installed-version] != [get latest-version]) do={ - ## New version of RouterOS available, let's upgrade - :log info ("Upgrading RouterOS on router $[/system identity get name], board name: $[/system resource get board-name], serial number: $[/system routerboard get serial-number] | From $[/system package update get installed-version] to $[/system package update get latest-version] (channel:$[/system package update get channel])") - - :if ($emailEnabled = true) do={ - :local attachments; - - :if ($sendBackupToEmail = true) do={ - ## date and time in format: 2018aug06-215139 - :local dtame ([:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . "-" . [:pick [/system clock get time] 0 2] . [:pick [/system clock get time] 3 5] . [:pick [/system clock get time] 6 8]); - ## unified backup file name without extension - :local bname "$[/system identity get name].$[/system routerboard get serial-number].v$[/system package update get installed-version]_$dtame" - :local sysFileBackup "$bname.backup" - :local configFileBackup "$bname.rsc" - :set attachments {$sysFileBackup;$configFileBackup} - - ## Make system backup - /system backup save dont-encrypt=yes name=$bname - ## Export config file - /export compact file=$bname - - ## Wait until bakup is done - :delay 15s; - } - - /tool e-mail send to=$emailAddress subject="Upgrade router: $[/system identity get name] FW has been started" body="Upgrading RouterOS on router $[/system identity get name] from $[/system package update get installed-version] to $[/system package update get latest-version] \r\nYou will recieve final report with detailed information when upgrade process is finished. If you have not got second email in next 5 minutes, then probably something went wrong." file=$attachments - - ## Wait for mail to be send & upgrade - :delay 15s; - - ## Remove backups which we have already sent - :if ($sendBackupToEmail = true && [/tool e-mail get last-status] = "succeeded") do={ - /file remove $attachments; - } - } - - - ## Set scheduled task to upgrade routerboard firmware on the next boot, task will be deleted when upgrade is done. (That is why you should keep original script name) - /system schedule add name=BEE-UPGRADE-NEXT-BOOT on-event=":global beeUpdateStep \"routerboardUpgrade\"; :delay 1s; /system script run firmware-updater;" start-time=startup interval=0 - - ## "install" command is reincarnation of the "upgrade" command - doing exactly the same but under a different name - install -} - -## Second step (after first reboot) routerboard firmware upgrade -:if ( $beeUpdateStep = "routerboardUpgrade") do={ - - ## Remove global variable for this step - /system script environment remove beeUpdateStep; - ## Remove task because we need it just once, right after reboot next to RouterOS install - /system scheduler remove BEE-UPGRADE-NEXT-BOOT - - ## RouterOS latest, let's check for updated firmware - /system routerboard - - :if ( [get current-firmware] != [get upgrade-firmware]) do={ - ## New version of firmware available, let's upgrade - :log info ("Upgrading firmware on router $[/system identity get name], board name: $[/system resource get board-name], serial number: $[/system routerboard get serial-number] | From $[/system routerboard get current-firmware] to $[/system routerboard get upgrade-firmware]") - - ## Start the upgrading process - upgrade - - ## Wait until the upgrade is finished - :delay 60s; - - ## Set scheduled task to send final report on the next boot, task will be deleted when is is done. (That is why you should keep original script name) - /system schedule add name=BEE-FINAL-REPORT-NEXT-BOOT on-event=":global beeUpdateStep \"finalReport\"; :delay 1s; /system script run firmware-updater;" start-time=startup interval=0 - - ## Reboot system to boot with new firmware - /system reboot - } -} - -## Last step (after second reboot) sending final report -:if ( $beeUpdateStep = "finalReport") do={ - ## Remove global variable for this step - /system script environment remove beeUpdateStep; - ## Remove task because we need it just once - /system scheduler remove BEE-FINAL-REPORT-NEXT-BOOT - - :log info "Upgrading RouterOS and routerboard firmware finished. Current RouterOS version: $[/system package update get installed-version], routerboard firmware: $[/system routerboard get current-firmware]." - - :if ($emailEnabled = true) do={ - /tool e-mail send to="$emailAddress" subject="Router: $[/system identity get name] has been upgraded with new FW!" body="Upgrading RouterOS and routerboard firmware finished. \r\n\r\nRouter name: $[/system identity get name]\r\nCurrent RouterOS version: $[/system package update get installed-version]; Routerboard firmware: $[/system routerboard get current-firmware]; Update channel: $[/system package update get channel]; \r\nBoard name: $[/system resource get board-name]; Serial number: $[/system routerboard get serial-number]; \r\n\r\n Changelog: https://mikrotik.com/download/changelogs/current-release-tree" - } -} \ No newline at end of file diff --git a/README.md b/README.md index ef8506b..94ce4b0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,28 @@ -# Mikrotik scripts -Useful scripts for MikroTik RouterOS +# Mikrotik Firmware Auto Updater +Script automatically updates router to the latest firmware. +When script finds new uptate it sends email notification that upgrade process has started, system backup and config file are in attachment. After firmware and routerboard got updated, it sends second email which tells that upgrade process has been finished. -## [Auto update, backup and email notification](https://github.com/beeyev/mikrotik/tree/master/Auto-Upgrade) +## How to use +##### 1. Create new script +System -> Scripts [Add] +**Imprtant! ** Script name has to be **firmware-updater** +Put script source and **set your email address** to the variable *emailAddress* +![](https://github.com/beeyev/Mikrotik-Firmware-Auto-Updater/raw/master/howto/script-name.png) + +##### 2. Configure mail server +Tools -> Email +Set your email server parameters. If you don't have one, i recommend to use [smtp2go.com](https://smtp2go.com "smtp2go.com") service, it allows to send thousand emails per month for free. +![](https://github.com/beeyev/Mikrotik-Firmware-Auto-Updater/raw/master/howto/email-config.png) + +##### 3. Create scheduled task +System -> Scheduler [Add] +Name: Firmware Updater +Start Time: 03:00:00 +Interval: 1d 00:00:00 +On Event: /system script run firmware-updater; +![](https://github.com/beeyev/Mikrotik-Firmware-Auto-Updater/raw/master/howto/scheduler-task.png) + +Or you can use this command to create the task: +``` +/system scheduler add name="Firmware Updater" on-event="/system script run firmware-updater;" start-time=03:00:00 interval=1d comment="" disabled=no +``` \ No newline at end of file diff --git a/firmware-updater.rsc b/firmware-updater.rsc new file mode 100644 index 0000000..8e60a01 --- /dev/null +++ b/firmware-updater.rsc @@ -0,0 +1,119 @@ +# Script name: firmware-updater + +########## Set variables +## Notification e-mail +:local emailEnabled true; +:local emailAddress "email@example.com"; +:local sendBackupToEmail true; + +## Backup encryption password, no encryption if no password. +:local backupPassword "" +## If true, passwords will be included in exported config +:local sensetiveDataInConfig false; + +## Update channel. Possible values: current, bugfix +:local updateChannel "current"; +########## + + +## !!!! DO NOT CHANGE ANYTHING BELOW THIS LINE, IF YOU ARE NOT SURE WHAT YOU ARE DOING !!!! ## +:log info ("Firmware checking and upgrade process has started"); +## Set global var to the local one, then delete it form the global environment +:global beeGlobalUpdateStep; +:local updateStep $beeGlobalUpdateStep; +/system script environment remove beeGlobalUpdateStep + +## if it is a very first step +:if ([:len $updateStep] = 0) do={ + ## Check for update + /system package update set channel=$updateChannel; + /system package update check-for-updates; + + # If we found some updates + :if ([/system package update get installed-version] != [/system package update get latest-version]) do={ + ## New version of RouterOS available, let's upgrade + :log info ("Upgrading RouterOS on router $[/system identity get name], board name: $[/system resource get board-name], serial number: $[/system routerboard get serial-number] | From $[/system package update get installed-version] to $[/system package update get latest-version] (channel:$[/system package update get channel])"); + + :if ($emailEnabled = true) do={ + :local attachments; + + :if ($sendBackupToEmail = true) do={ + ## date and time in format: 2018aug06-215139 + :local dtame ([:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . "-" . [:pick [/system clock get time] 0 2] . [:pick [/system clock get time] 3 5] . [:pick [/system clock get time] 6 8]); + ## unified backup file name without extension + :local bname "$[/system identity get name].$[/system routerboard get serial-number].v$[/system package update get installed-version]_$dtame"; + :local sysFileBackup "$bname.backup"; + :local configFileBackup "$bname.rsc"; + :set attachments {$sysFileBackup;$configFileBackup} + + ## Make system backup + :if ([:len $backupPassword] = 0) do={ + /system backup save dont-encrypt=yes name=$bname; + } else={ + /system backup save encryption=aes-sha256 password=$backupPassword name=$bname; + } + + ## Export config file + :if ($sensetiveDataInConfig = true) do={ + /export compact file=$bname; + } else={ + /export compact hide-sensitive file=$bname; + } + + ## Wait until bakup is done + :delay 15s; + } + + /tool e-mail send to=$emailAddress subject="Upgrade router: $[/system identity get name] FW has been started" body="Upgrading RouterOS on router $[/system identity get name] from $[/system package update get installed-version] to $[/system package update get latest-version] \r\nYou will recieve final report with detailed information when upgrade process is finished. If you have not got second email in next 5 minutes, then probably something went wrong." file=$attachments; + + ## Wait for mail to be send & upgrade + :delay 15s; + + ## Remove backups which we have already sent + :if ($sendBackupToEmail = true && [/tool e-mail get last-status] = "succeeded") do={ + /file remove $attachments; + } + } + + ## Set scheduled task to upgrade routerboard firmware on the next boot, task will be deleted when upgrade is done. (That is why you should keep original script name) + /system schedule add name=BEE-UPGRADE-NEXT-BOOT on-event="/system scheduler remove BEE-UPGRADE-NEXT-BOOT; :global beeGlobalUpdateStep \"routerboardUpgrade\"; :delay 5s; /system script run firmware-updater;" start-time=startup interval=0; + + ## command is reincarnation of the "upgrade" command - doing exactly the same but under a different name + /system package update install; + } +} + + +## Second step (after first reboot) routerboard firmware upgrade +:if ( $updateStep = "routerboardUpgrade") do={ + + ## RouterOS latest, let's check for updated firmware + + :if ( [/system routerboard get current-firmware] != [/system routerboard get upgrade-firmware]) do={ + ## New version of firmware available, let's upgrade + :log info ("Upgrading firmware on router $[/system identity get name], board name: $[/system resource get board-name], serial number: $[/system routerboard get serial-number] | From $[/system routerboard get current-firmware] to $[/system routerboard get upgrade-firmware]"); + + ## Start the upgrading process + /system routerboard upgrade; + + ## Wait until the upgrade is finished + :delay 30s; + + ## Set scheduled task to send final report on the next boot, task will be deleted when is is done. (That is why you should keep original script name) + /system schedule add name=BEE-FINAL-REPORT-NEXT-BOOT on-event="/system scheduler remove BEE-FINAL-REPORT-NEXT-BOOT; :global beeGlobalUpdateStep \"finalReport\"; :delay 10s; /system script run firmware-updater;" start-time=startup interval=0; + + ## Reboot system to boot with new firmware + /system reboot; + } +} + +## Last step (after second reboot) sending final report +:if ( $updateStep = "finalReport") do={ + :log info "Upgrading RouterOS and routerboard firmware finished. Current RouterOS version: $[/system package update get installed-version], routerboard firmware: $[/system routerboard get current-firmware]."; + + :if ($emailEnabled = true) do={ + /tool e-mail send to="$emailAddress" subject="Router: $[/system identity get name] has been upgraded with new FW!" body="Upgrading RouterOS and routerboard firmware finished. \r\n\r\nRouter name: $[/system identity get name]\r\nCurrent RouterOS version: $[/system package update get installed-version]; Routerboard firmware: $[/system routerboard get current-firmware]; Update channel: $[/system package update get channel]; \r\nBoard name: $[/system resource get board-name]; Serial number: $[/system routerboard get serial-number]; \r\n\r\n Changelog: https://mikrotik.com/download/changelogs/current-release-tree"; + } +} + +:log info ("Firmware updater has finished it's job"); \ No newline at end of file diff --git a/howto/email-config.png b/howto/email-config.png new file mode 100644 index 0000000000000000000000000000000000000000..a29ed5185040b2495df496646ebdb48efd6b9d88 GIT binary patch literal 7442 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 literal 0 HcmV?d00001