From 17c9c9b3ae675859b42d4a4de5d0ed7c4cbbbf2a Mon Sep 17 00:00:00 2001 From: Alexander Beeyev Date: Mon, 20 Jan 2020 14:46:36 +0300 Subject: [PATCH] New version 20.01.20 Script was completely rewritten and became even better! --- .gitignore | 1 + BackupAndUpdate.rsc | 315 +++++++++++++++++++++++++++++++++++++++ LICENSE => LICENSE.md | 2 +- README.md | 71 ++++++--- docs/index.html | 0 firmware-updater.rsc | 254 ------------------------------- howto/scheduler-task.png | Bin 17657 -> 19939 bytes howto/script-name.png | Bin 26505 -> 25281 bytes 8 files changed, 371 insertions(+), 272 deletions(-) create mode 100644 .gitignore create mode 100644 BackupAndUpdate.rsc rename LICENSE => LICENSE.md (95%) create mode 100644 docs/index.html delete mode 100644 firmware-updater.rsc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2771fe3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/ignore \ No newline at end of file diff --git a/BackupAndUpdate.rsc b/BackupAndUpdate.rsc new file mode 100644 index 0000000..2e7c1a5 --- /dev/null +++ b/BackupAndUpdate.rsc @@ -0,0 +1,315 @@ +# Script name: BackupAndUpdate +# +#----------SCRIPT INFORMATION--------------------------------------------------- +# +# Script: Mikrotik RouterOS automatic backup & update +# Version: 20.01.20 +# Created: 07/08/2018 +# Updated: 20/01/2020 +# Author: Alexander Tebiev +# Website: https://github.com/beeyev +# You can contact me by e-mail at tebiev@mail.com +# +# IMPORTANT! +# Minimum supported RouterOS version is v6.43.7 +# +#----------MODIFY THIS SECTION AS NEEDED---------------------------------------- +## Notification e-mail +## (Make sure you have configurated Email settings in Tools -> Email) +:local emailAddress "yourmail@example.com"; + +## Script mode, possible values: backup, osupdate, osnotify. +# backup - only backup will be perfomed. (default value, if none provided) +# osupdate - script will make a backup and install new RouterOS if it is available. +# osnotify - script will make a backup and notify about new RouterOS version. +:local scriptMode "osnotify"; + +## 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: stable, long-term, testing, development +:local updateChannel "stable"; + +## Install only patch versions of RouterOS updates. +## Works only if you set scriptMode to "osupdate" +## Means that new update will be installed only if MAJOR and MINOR version numbers remained the same as currently installed RouterOS. +## Example: v6.43.6 => major.minor.PATCH +## Script will send information if new version is greater than just patch. +:local installOnlyPatchUpdates false; +##------------------------------------------------------------------------------------------## +# !!!! DO NOT CHANGE ANYTHING BELOW THIS LINE, IF YOU ARE NOT SURE WHAT YOU ARE DOING !!!! # +##------------------------------------------------------------------------------------------## + +:log info "\r\nBkp&Upd: script \"Mikrotik RouterOS automatic backup & update\" started."; + +#Check proper email config +:if ([:len $emailAddress] = 0 or [:len [/tool e-mail get address]] = 0 or [:len [/tool e-mail get from]] = 0) do={ + :log error ("Bkp&Upd: Email configuration is not correct, please check Tools -> Email. Script stopped."); + :error "Bkp&Upd: bye!"; +} + +############### vvvvvvvvv GLOBALS vvvvvvvvv ############### +# Function converts standard mikrotik build versions to the number. +# Possible arguments: osVer +# Example: +# :put [$brGlobalFuncGetOsVerNum osVer=[/system routerboard get current-RouterOS]]; +# result will be: 64301, because current RouterOS version is: 6.43.1 +:global brGlobalFuncGetOsVerNum do={ + :local osVerNum; + :local osVerMicroPart; + :local zro 0; + :local tmp; + + :local dotPos1 [:find $osVer "." 0]; + + :if ($dotPos1 > 0) do={ + + # AA + :set osVerNum [:pick $osVer 0 $dotPos1]; + + :local dotPos2 [:find $osVer "." $dotPos1]; + #Taking minor version, everything after first dot + :if ([:len $dotPos2] = 0) do={:set tmp [:pick $osVer ($dotPos1+1) [:len $osVer]];} + #Taking minor version, everything between first and second dots + :if ($dotPos2 > 0) do={:set tmp [:pick $osVer ($dotPos1+1) $dotPos2];} + + # AA 0B + :if ([:len $tmp] = 1) do={:set osVerNum "$osVerNum$zro$tmp";} + # AA BB + :if ([:len $tmp] = 2) do={:set osVerNum "$osVerNum$tmp";} + + :if ($dotPos2 > 0) do={ + :set tmp [:pick $osVer ($dotPos2+1) [:len $osVer]]; + # AA BB 0C + :if ([:len $tmp] = 1) do={:set osVerNum "$osVerNum$zro$tmp";} + # AA BB CC + :if ([:len $tmp] = 2) do={:set osVerNum "$osVerNum$tmp";} + } else={ + # AA BB 00 + :set osVerNum "$osVerNum$zro$zro"; + } + } else={ + # AA 00 00 + :set osVerNum "$osVer$zro$zro$zro$zro"; + } + + :return $osVerNum; +} + +:global brGlobalVarUpdateStep; +############### ^^^^^^^^^ GLOBALS ^^^^^^^^^ ############### + +#Current date time in format: 2020jan15-221324 +:local dateTime ([: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]); + +:local deviceOsVerInst [/system package update get installed-version]; +:local deviceOsVerInstNum [$brGlobalFuncGetOsVerNum osVer=$deviceOsVerInst]; +:local deviceOsVerAvail ""; +:local deviceOsVerAvailNum 0; +:local deviceRbModel [/system routerboard get model]; +:local deviceRbSerialNumber [/system routerboard get serial-number]; +:local deviceRbCurrentFw [/system routerboard get current-firmware]; +:local deviceRbUpgradeFw [/system routerboard get upgrade-firmware]; +:local deviceIdentityName [/system identity get name]; +:local deviceUpdateChannel [/system package update get channel]; + +:local isOsUpdateAvailable false; +:local isOsNeedsToBeUpdated false; + +:local mailSubject ""; +:local mailBody ""; + +:local mailBodyDeviceInfo "\r\n\r\nDevice information: \r\nIdentity: $deviceIdentityName \r\nModel: $deviceRbModel \r\nSerial number: $deviceRbSerialNumber \r\nCurrent RouterOS: $deviceOsVerInst ($[/system package update get channel]) $[/system resource get build-time] \r\nCurrent routerboard FW: $deviceRbCurrentFw \r\nDevice uptime: $[/system resource get uptime]"; +:local mailBodyCopyright "\r\n\r\nMikrotik RouterOS automatic backup & update \r\nhttps://github.com/beeyev/Mikrotik-RouterOS-automatic-backup-and-update"; +:local changelogUrl ("Check RouterOS changelog: https://mikrotik.com/download/changelogs/" . $updateChannel . "-release-tree"); + +:local mailAttachments [:toarray ""]; + +:local updateStep $brGlobalVarUpdateStep; +:do {/system script environment remove brGlobalVarUpdateStep;} on-error={} +:if ([:len $updateStep] = 0) do={ + :set updateStep 1; +} + + +## STEP ONE: Creating backups, checking for new RouterOs version and sending email with backups, +## steps 2 and 3 are fired only if script is set to automatically update device and if new RouterOs is available. +:if ($updateStep = 1) do={ + :log info ("Bkp&Upd: Performing the first step."); + + # Set email subject and body for the first step + :set mailSubject "Bkp&Upd: Backup completed - $[:pick $deviceIdentityName 0 18]."; + :set mailBody "\"$deviceIdentityName\" system backups were created and attached to this email."; + + ## PREPARE BACKUP DATA + :log info ("Bkp&Upd: Creating system backups."); + + :local bname "$deviceIdentityName.$deviceBoardModel.$deviceSerialNumber.v$deviceOsVerInst.$deviceUpdateChannel.$dateTime"; + :local backupFileSys "$bname.backup"; + :local backupFileConfig "$bname.rsc"; + + :set mailAttachments {$backupFileSys;$backupFileConfig}; + + ## Make system backup + :if ([:len $backupPassword] = 0) do={ + /system backup save dont-encrypt=yes name=$bname; + } else={ + /system backup save password=$backupPassword name=$bname; + } + :log info ("Bkp&Upd: System backup created. $backupFileSys"); + + ## Export config file + :if ($sensetiveDataInConfig = true) do={ + /export compact file=$bname; + } else={ + /export compact hide-sensitive file=$bname; + } + :log info ("Bkp&Upd: Config file was exported. $backupFileConfig"); + + # Checking for new RouterOS version + if ($scriptMode = "osupdate" or $scriptMode = "osnotify") do={ + log info ("Bkp&Upd: Checking for new RouterOS version. Current version is: $deviceOsVerInst"); + /system package update set channel=$updateChannel; + /system package update check-for-updates; + :delay 5s; + :set deviceOsVerAvail [/system package update get latest-version]; + + # If there is a problem getting information about available RouterOS from server + :if ([:len $deviceOsVerAvail] = 0) do={ + :log warning ("Bkp&Upd: There is a problem getting information about new RouterOS from server."); + :set mailSubject ($mailSubject . " Error: No data about new RouterOS!") + :set mailBody ($mailBody . "\r\n\r\nError occured! \r\nMikrotik couldn't get any information about new RouterOS from server! \r\nWatch additional information in device logs.") + } else={ + #Get numeric version of OS + :set deviceOsVerAvailNum [$brGlobalFuncGetOsVerNum osVer=$deviceOsVerAvail]; + + # Checking if OS on server is greater than installed one. + :if ($deviceOsVerAvailNum > $deviceOsVerInstNum) do={ + :set isOsUpdateAvailable true; + :log info ("Bkp&Upd: New RouterOS is available! $deviceOsVerAvail"); + } else={ + :set mailSubject ($mailSubject . " No new OS updates.") + :set mailBody ($mailBody . "\r\nYour system is up to date.") + :log info ("Bkp&Upd: System is already up to date.") + } + }; + } else={ + #Delay after creating backups + :delay 5s; + }; + + + # if new OS version is available to install + if ($isOsUpdateAvailable = true) do={ + # If we only need to notify about new available version + if ($scriptMode = "osnotify") do={ + :set mailSubject ($mailSubject . " New RouterOS is available! v.$deviceOsVerAvail") + :set mailBody ($mailBody . "\r\n\r\nNew RouterOS version is available to install: v.$deviceOsVerAvail ($updateChannel) \r\n$changelogUrl") + } + + # if we need to initiate RouterOs update process + if ($scriptMode = "osupdate") do={ + :set isOsNeedsToBeUpdated true; + # if we need to install only patch updates + :if ($installOnlyPatchUpdates = true) do={ + #Check if Major and Minor builds are the same. + :if ([:pick $deviceOsVerInstNum 0 ([:len $deviceOsVerInstNum]-2)] = [:pick $deviceOsVerAvailNum 0 ([:len $deviceOsVerAvailNum]-2)]) do={ + :log info ("Bkp&Upd: New patch version of RouterOS firmware is available."); + } else={ + :log info ("Bkp&Upd: New minor version of RouterOS firmware is available. You need to update it manually."); + :set mailSubject ($mailSubject . " New major RouterOS is available: v.$deviceOsVerAvail!"); + :set mailBody ($mailBody . "\r\n\r\nNew major RouterOS version is available to install: v.$deviceOsVerAvail ($updateChannel). \r\nYou chose to automatically install only patch updates, so this major update you need to install manually. \r\n$changelogUrl"); + :set isOsNeedsToBeUpdated false; + } + } + + #Check again, because this variable could be changed during checking for installing only patch updats + if ($isOsNeedsToBeUpdated = true) do={ + :set mailSubject ($mailSubject . " New RouterOS is going to be installed! v.$deviceOsVerInst -> v.$deviceOsVerAvail"); + :set mailBody ($mailBody . "\r\n\r\nYour Mikrotik will be updated to the new RouterOS version from v.$deviceOsVerInst to v.$deviceOsVerAvail (Update channel: $updateChannel) \r\nFinal report with detailed information will be sent when update process is completed. \r\nIf you have not received second email in the next 5 minutes, then probably something went wrong."); + #!! There is more code connected to this part and first step at the end of the script. + } + + } + } + + + # Combine fisrst step email + :set mailBody ($mailBody . $mailBodyDeviceInfo . $mailBodyCopyright); + :log info ("Bkp&Upd: Sending email with backups in attachment."); +} + +# Remove function brGlobalFuncGetOsVerNum from global environment to keep it fresh and clean. +:do {/system script environment remove brGlobalFuncGetOsVerNum;} on-error={} + +## STEP TWO: (after first reboot) routerboard firmware upgrade +## steps 2 and 3 are fired only if script is set to automatically update device and if new RouterOs is available. +:if ($updateStep = 2) do={ + :log info ("Bkp&Upd: Performing the second step."); + ## RouterOS is the latest, let's check for upgraded routerboard firmware + if ($deviceRbCurrentFw != $deviceRbUpgradeFw) do={ + :log info "Bkp&Upd: Upgrading routerboard firmware from v.$deviceRbCurrentFw to v.$deviceRbUpgradeFw"; + ## Start the upgrading process + /system routerboard upgrade; + ## Wait until the upgrade is completed + :delay 5s; + :log info "Bkp&Upd: routerboard upgrading process was completed, going to reboot in a moment!"; + ## 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=BKPUPD-FINAL-REPORT-ON-NEXT-BOOT on-event=":delay 5s; /system scheduler remove BKPUPD-FINAL-REPORT-ON-NEXT-BOOT; :global brGlobalVarUpdateStep 3; :delay 10s; /system script run BackupAndUpdate;" start-time=startup interval=0; + ## Reboot system to boot with new firmware + /system reboot; + } +} + +## STEP THREE: Last step (after second reboot) sending final report +## steps 2 and 3 are fired only if script is set to automatically update device and if new RouterOs is available. +:if ($updateStep = 3) do={ + :log info "Bkp&Upd: RouterOS and routerboard upgrading process of was completed. New RouterOS version: v.$deviceOsVerInst, routerboard firmware: v.$deviceRbCurrentFw."; + :set mailSubject "Bkp&Upd: Router - $[:pick $deviceIdentityName 0 18] has been upgraded to the new RouterOS v.$deviceOsVerInst!"; + :set mailBody "RouterOS and routerboard upgrading process was completed. \r\nNew RouterOS version: v.$deviceOsVerInst, routerboard firmware: v.$deviceRbCurrentFw. \r\n$changelogUrl $mailBodyDeviceInfo $mailBodyCopyright"; +} + +## +## SENDING EMAIL +## +# Trying to send email with backups in attachment. +:if ($updateStep = 1 or $updateStep = 3) do={ + :do {/tool e-mail send to=$emailAddress subject=$mailSubject body=$mailBody file=$mailAttachments;} on-error={ + :log error "Bkp&Upd: could not send email message ($[/tool e-mail get last-status]). Going to try it again in a while." + :delay 5m; + :do {/tool e-mail send to=$emailAddress subject=$mailSubject body=$mailBody file=$mailAttachments;} on-error={ + :log error "Bkp&Upd: could not send email message ($[/tool e-mail get last-status]) for the second time." + + if ($isOsNeedsToBeUpdated = true) do={ + :log warning "Bkp&Upd: script didn't initialise update process due to inability to send backups to email." + } + } + } + :delay 5s; +} + + + +## Remove backups which we have already sent during first step +:if ($updateStep = 1 and [/tool e-mail get last-status] = "succeeded") do={ + :log info "Bkp&Upd: File system cleanup." + /file remove $mailAttachments; + :delay 2s; + + # Fire update process only if backups were successfully sent + if ($isOsNeedsToBeUpdated = true) do={ + + ## 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=BKPUPD-UPGRADE-ON-NEXT-BOOT on-event=":delay 5s; /system scheduler remove BKPUPD-UPGRADE-ON-NEXT-BOOT; :global brGlobalVarUpdateStep 2; :delay 10s; /system script run BackupAndUpdate;" start-time=startup interval=0; + + :log info "Bkp&Upd: everything is ready to install new RouterOS, going to reboot in a moment!" + ## command is reincarnation of the "upgrade" command - doing exactly the same but under a different name + /system package update install; + } +} + + +:log info "Bkp&Upd: script \"Mikrotik RouterOS automatic backup & update\" completed it's job.\r\n"; \ No newline at end of file diff --git a/LICENSE b/LICENSE.md similarity index 95% rename from LICENSE rename to LICENSE.md index b6f92df..4bd56b5 100644 --- a/LICENSE +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2018 Aleksandr Tebiev +Copyright (c) Alexander Tebiev tebiev@mail.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 1742489..0698506 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,66 @@ -# Mikrotik Firmware Auto Updater -The script automatically updates the router to the latest firmware. -When script finds new update it sends an email notification that upgrade process has started, system backup and config file are in the attachment. After firmware and routerboard got updated, it sends the second email which tells that upgrade process finished. +# Mikrotik RouterOS automatic backup and update + +This script provides an ability to create Mikrotik's daily backups to email. You can also enable automatic RouterOS upgrade or leave only notifications about new firmware versions. + +## Features: +- Ability to choose script operating mode according to your needs. *(Read below)* +- Script creates backups of the whole system and exported config. +- You can set a preferred update channel. +- If automatic updates are enabled, you can set script to install only patch versions of RouterOS updates. *This means if the current RouterOS version is v6.43.6, the script will automatically install v6.43.7 (new patch version) but not v6.44.0 (new minor version), for example.* +- Script includes primary information about the device into the email message. So you can easily find the backup you need among multiple devices. +- For safety purposes, an automatic update process will not be started if script could not send backups to email. +- Routerboard firmware can be automatically upgraded according to the installed RouterOS version. + + +## Script operating modes: +**Backups only** - script creates system and config backups and sends them to specified email as an attachment. Using email account as storage for your backups. +**Backups and notifications about new RouterOS release** - Except backups, script also checks for new RouterOS firmware release and provides this information in the email. +**Backups and automatic RouterOS upgrade** - Script makes a backup, then checks for new RouterOS version, and if new firmware released, script will initiate upgrade process. By the end, you receive two emails. The first one contains system backups of the previous RouterOS version, the second message will be sent when the upgrade process is done. ## How to use -##### 1. Create new script +##### 1. Configure parameters +Take the [script](https://github.com/beeyev/Mikrotik-RouterOS-automatic-backup-and-update/raw/master/BackupAndUpdate.rsc) and configure it's parameters at the begining of the file. +This is not difficult because all parameters are well commented. +**Imprtant!** Don't forget to provide correct email address for backups and pay attention a `scriptMode` variable. + +##### 2. 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) +**Imprtant!** Script name has to be `BackupAndUpdate` +Put the script which you configured earlier into the source area. +![](https://github.com/beeyev/Mikrotik-RouterOS-automatic-backup-and-update/raw/master/howto/script-name.png) -##### 2. Configure mail server +##### 3. 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 sending a thousand emails per month for free. -![](https://github.com/beeyev/Mikrotik-Firmware-Auto-Updater/raw/master/howto/email-config.png) +![](https://github.com/beeyev/Mikrotik-RouterOS-automatic-backup-and-update/raw/master/howto/email-config.png) -##### 3. Create scheduled task +To check email settings, send a test message by running the following command in terminal: +``` +/tool e-mail send to="yourMail@example.com" subject="backup & update test!" body="It works!"; +``` + +##### 4. 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) +Name: `Backup And Update` +Start Time: `03:10:00` +Interval: `1d 00:00:00` +On Event: `/system script run BackupAndUpdate;` +![](https://github.com/beeyev/Mikrotik-RouterOS-automatic-backup-and-update/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 +/system scheduler add name="Firmware Updater" on-event="/system script run BackupAndUpdate;" start-time=03:10:00 interval=1d comment="" disabled=no +``` +##### 5. Test the script +When everything is done, you need to make sure that the script is working correctly. +To do so, open a New Terminal and Log window in your WinBox, then run the script manually by executing this command `/system script run BackupAndUpdate;` in Terminal. +You will see the script working process in the log window. If the script finished without errors, check your email, there is a fresh message with backups from your MikroTik waiting for you 🎉 + +## License + +The MIT License (MIT). Please see [License File](LICENSE.md) for more information. + +--- +![](https://visitor-count-badge.herokuapp.com/total.svg?repo_id=beeyev.Mikrotik-RouterOS-automatic-backup-and-update) +![](https://visitor-count-badge.herokuapp.com/today.svg?repo_id=beeyev.Mikrotik-RouterOS-automatic-backup-and-update) diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..e69de29 diff --git a/firmware-updater.rsc b/firmware-updater.rsc deleted file mode 100644 index 584cf9f..0000000 --- a/firmware-updater.rsc +++ /dev/null @@ -1,254 +0,0 @@ -# Script name: firmware-updater - -########## Set variables -## Notification e-mail -:local emailEnabled true; -:local emailAddress "yourmail@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: stable, long-term -:local updateChannel "stable"; - -## Install only patch versions of firmware updates. -## Means that new update will be installed only if major and minor version numbers are the same as currently installed firmware. -## Example: v6.43.6 => major.minor.PATCH -:local onlyPatchUpdates false; -########## - -## !!!! DO NOT CHANGE ANYTHING BELOW THIS LINE, IF YOU ARE NOT SURE WHAT YOU ARE DOING !!!! ## - -############### vvvvvvvvv GLOBAL FUNCTIONS vvvvvvvvv ############### -# Function converts standard mikrotik build versions to the number. -# Possible arguments: osVer -# Example: -# :put [$getOsVerNum osVer=[/system routerboard get current-firmware]]; -# result will be: 64301, because current-firmware value is: 6.43.1 -:global getOsVerNum do={ - :local osVerNum; - :local osVerMicroPart; - :local zro 0; - :local tmp; - - :local dotPos1 [:find $osVer "." 0]; - - :if ($dotPos1 > 0) do={ - - # AA - :set osVerNum [:pick $osVer 0 $dotPos1]; - - :local dotPos2 [:find $osVer "." $dotPos1]; - - #Taking minor version, everything after first dot - :if ([:len $dotPos2] = 0) do={:set tmp [:pick $osVer ($dotPos1+1) [:len $osVer]];} - #Taking minor version, everything between first and second dots - :if ($dotPos2 > 0) do={:set tmp [:pick $osVer ($dotPos1+1) $dotPos2];} - - # AA 0B - :if ([:len $tmp] = 1) do={:set osVerNum "$osVerNum$zro$tmp";} - # AA BB - :if ([:len $tmp] = 2) do={:set osVerNum "$osVerNum$tmp";} - - :if ($dotPos2 > 0) do={ - :set tmp [:pick $osVer ($dotPos2+1) [:len $osVer]]; - # AA BB 0C - :if ([:len $tmp] = 1) do={:set osVerNum "$osVerNum$zro$tmp";} - # AA BB CC - :if ([:len $tmp] = 2) do={:set osVerNum "$osVerNum$tmp";} - } else={ - # AA BB 00 - :set osVerNum "$osVerNum$zro$zro"; - } - } else={ - # AA 00 00 - :set osVerNum "$osVer$zro$zro$zro$zro"; - } - - :return $osVerNum; -} -############### ^^^^^^^^^ GLOBAL FUNCTIONS ^^^^^^^^^ ############### - -#Check proper email config -:if ($emailEnabled = true and ([:len $emailAddress] = 0 or [:len [/tool e-mail get address]] = 0 or [:len [/tool e-mail get from]] = 0)) do={ - :log warning ("Email notifications switched off, you need to check your e-mail configuration. Tools -> Email"); - :set emailEnabled false; -} - -:log info ("Firmware checking and upgrade process has started"); -#load global var -:global beePatchUpdateInapplicable; -## Set global var to the local one, then delete it form the global environment -:global beeGlobalUpdateStep; -:local updateStep $beeGlobalUpdateStep; -/system script environment remove beeGlobalUpdateStep; - -:log info ("Update step: $updateStep"); - -## if it is a very first step -:if ([:len $updateStep] = 0) do={ - - # Convert current version to numeric (6.43.8 => 64308) - :local osVerCurrent [/system package update get installed-version]; - :local osVerCurrentNum [$getOsVerNum osVer=$osVerCurrent]; - - ## We need this part to keep compatibility with firmware older than 6.43.7 - :if ($osVerCurrentNum < 64307 and [:len [:find "bugfix current release-candidate" $updateChannel 0]] = 0) do={ - :if ($updateChannel = "stable") do={ - :set updateChannel "current"; - } else={ - :if ($updateChannel = "long-term") do={ - :set updateChannel "bugfix"; - } else={ - :if ($updateChannel = "testing") do={ - :set updateChannel "release-candidate"; - } - } - } - } - log info ("Checking for new firmware version. Current version is: $osVerCurrent"); - /system package update set channel=$updateChannel; - /system package update check-for-updates; - :delay 5s; - - # Getting info about new available firmware version - :local osVerNew [/system package update get latest-version]; - :delay 5s; - - # If there is a problem getting information about available firmware from server - :if ([:len $osVerNew] = 0) do={ - :log info ("There is a problem getting information about available firmware from server. No internet connection \?"); - :error "Error during firmware-updater script execution, please see log."; - } - - # Convert new version to numeric (6.43.8 => 64308) - :local osVerNewNum [$getOsVerNum osVer=$osVerNew]; - # Remove function getOsVerNum from global environment to keep it fresh and clean. - :set getOsVerNum; - - # Compare new and current versions - :local isUpdateAvailable false; - :if ($osVerNewNum > $osVerCurrentNum) do={ - :set isUpdateAvailable true; - :log info ("New firmware version found: $osVerNew"); - } else={ - :log info ("New firmware version not found.") - } - - # If only patch updates are allowed - :if ($onlyPatchUpdates = true and $isUpdateAvailable = true) do={ - #Check if Major and Minor builds are the same. - :if ([:pick $osVerCurrentNum 0 ([:len $osVerCurrentNum]-2)] = [:pick $osVerNewNum 0 ([:len $osVerNewNum]-2)]) do={ - :log info ("New patch version of RouterOS firmware is available."); - } else={ - :log info ("New major version of RouterOS firmware is available. You have to update it manually."); - :set isUpdateAvailable false; - #Send email just once - :if ($beePatchUpdateInapplicable != true and $emailEnabled = true) do={ - :log info ("Email was sent just once."); - /tool e-mail send to="$emailAddress" subject="Router: $[/system identity get name], new major version of RouterOS firmware is available: v$osVerNew" body="New major version of RouterOS firmware is available. You have to update it manually.. \r\n\r\nRouter name: $[/system identity get name]\r\nCurrent RouterOS version: $osVerCurrent; 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"; - :delay 5s; - # If notification was sent, we no longer bother with it. - :if ([/tool e-mail get last-status] = "succeeded") do={ - :global beePatchUpdateInapplicable true; - } - } - } - } - - #Keep environment clean - :if ($isUpdateAvailable = true and $beePatchUpdateInapplicable = true) do={ - /system script environment remove beePatchUpdateInapplicable; - } - - # If we found some updates - :if ($isUpdateAvailable = true) do={ - ## New version of RouterOS available, let's upgrade - :log info ("Going to update RouterOS firmware from $osVerCurrent to $osVerNew (channel:$updateChannel)"); - - :if ($emailEnabled = true) do={ - :local attachments; - - #M# acking system backups to attach them in email. - :if ($sendBackupToEmail = true) do={ - :log info ("Making system backups."); - ## 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 password=$backupPassword name=$bname; - } - - ## Export config file - :if ($sensetiveDataInConfig = true) do={ - /export compact file=$bname; - } else={ - /export compact hide-sensitive file=$bname; - } - :delay 5s; - } - - :log info ("Sending email"); - /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 $osVerCurrent to $osVerNew \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; - :delay 5s; - - ## 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 15s; /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 5s; - - ## 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 15s; /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/scheduler-task.png b/howto/scheduler-task.png index 24eb11b6cb8b93f84a1a388801a1ebe8d11dad14..60ad5ef1b032bbae4682a328b473163c13acb61f 100644 GIT binary patch literal 19939 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 N7A984`G&5K{sDaZC+z?L literal 17657 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�B3i@medM9dUv+cLa1>c*7ygRW<+i?=&o2o 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 literal 26505 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