From 2907dbe18f0ac17b9fcae5df56b673d129839d66 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 7 Jul 2020 00:21:47 +0200 Subject: check-routeros-update: support installing patch updates automatically --- check-routeros-update | 14 ++++++++++++++ global-config | 2 ++ 2 files changed, 16 insertions(+) diff --git a/check-routeros-update b/check-routeros-update index 9109e1d..931c32f 100644 --- a/check-routeros-update +++ b/check-routeros-update @@ -8,12 +8,14 @@ :global Identity; :global SafeUpdateUrl; +:global SafeUpdatePatch; :global SentRouterosUpdateNotification; :global DeviceInfo; :global LogPrintExit; :global ScriptFromTerminal; :global SendNotification; +:global VersionToNum; :local DoUpdate do={ :if ([ / system script print count-only where name="packages-update" ] > 0) do={ @@ -43,6 +45,18 @@ } :if ($Update->"installed-version" != $Update->"latest-version") do={ + :local NumInstalled [ $VersionToNum ($Update->"installed-version") ]; + :local NumLatest [ $VersionToNum ($Update->"latest-version") ]; + + :if ($SafeUpdatePatch = true && $NumInstalled < $NumLatest && \ + ($NumInstalled & 0xffff0000) = ($NumLatest & 0xffff0000)) do={ + $LogPrintExit info ("Version " . $Update->"latest-version" . " is a patch release, updating...") false; + $SendNotification ("RouterOS update") \ + ("Version " . $Update->"latest-version" . " is a patch update for " . $Update->"channel" . \ + ", updating on " . $Identity . "...") "" "true"; + $DoUpdate; + } + :if ([ :len $SafeUpdateUrl ] > 0) do={ :local Result; :do { diff --git a/global-config b/global-config index 5f22b6b..3976e69 100644 --- a/global-config +++ b/global-config @@ -46,6 +46,8 @@ # The configured channel (bugfix, current, release-candidate) is appended. :global SafeUpdateUrl ""; #:global SafeUpdateUrl "https://example.com/ros/safe-update/"; +# Allow to install patch updates automatically. +:global SafeUpdatePatch false; # These thresholds control when to send health notification # on temperature and voltage. -- cgit v1.2.3-54-g00ecf