From 80469763d78c47b1c9c56880ce1cf4130619dec9 Mon Sep 17 00:00:00 2001 From: Pothi Kalimuthu <1254302+pothi@users.noreply.github.com> Date: Tue, 8 Nov 2022 21:11:52 +0530 Subject: [PATCH] Re/move unused scripts and add a new combined script --- scripts/alert-on-new-lte-modem-firmware.rsc | 24 ------- scripts/alert-on-new-ros-version.rsc | 46 ------------- ...-firmware-rb.rsc => firmware-check-rb.rsc} | 3 + ...irmware-ros.rsc => firmware-check-ros.rsc} | 3 + scripts/firmware-check.rsc | 68 +++++++++++++++++++ scripts/ros6-lteLogger2.rsc | 41 ----------- 6 files changed, 74 insertions(+), 111 deletions(-) delete mode 100644 scripts/alert-on-new-lte-modem-firmware.rsc delete mode 100644 scripts/alert-on-new-ros-version.rsc rename scripts/{check-firmware-rb.rsc => firmware-check-rb.rsc} (82%) rename scripts/{check-firmware-ros.rsc => firmware-check-ros.rsc} (87%) create mode 100644 scripts/firmware-check.rsc delete mode 100644 scripts/ros6-lteLogger2.rsc diff --git a/scripts/alert-on-new-lte-modem-firmware.rsc b/scripts/alert-on-new-lte-modem-firmware.rsc deleted file mode 100644 index 1f73408..0000000 --- a/scripts/alert-on-new-lte-modem-firmware.rsc +++ /dev/null @@ -1,24 +0,0 @@ -# Alert upon new firmware for LTE Modem - -# Ref: https://wiki.mikrotik.com/wiki/Manual:Interface/LTE#Modem_firmware_upgrade -:local adminEmailAddress "admin@example.com" - -:log info "Checking for new firmware for LTE Modem..." - -# if you run this script at "startup", -# the following indicates the time for the internet to go "up" -:delay 60s - -:local lteFirmwareInfo [/interface lte firmware-upgrade lte1 as-value]; - -:local lteInstalledVer ($lteFirmwareInfo->"installed"); -:local lteLatestVer ($lteFirmwareInfo->"latest"); - -:if ( $lteInstalledVer != $lteLatestVer ) do={ - /tool e-mail send to="$adminEmailAddress" subject="[Mikrotik] A new FIRMWARE update is available for (SXT) LTE." body="See subject!" - :log critical "A new firmware is available for LTE modem and an email is probably sent to '$adminEmailAddress'." -} else={ - :log info "No new firmware update for LTE." - :log info "LTE Installed Firmware Version: $lteInstalledVer" - :log info " LTE Latest Firmware Version: $lteLatestVer" -} diff --git a/scripts/alert-on-new-ros-version.rsc b/scripts/alert-on-new-ros-version.rsc deleted file mode 100644 index 1281f09..0000000 --- a/scripts/alert-on-new-ros-version.rsc +++ /dev/null @@ -1,46 +0,0 @@ -# Alert upon new Router OS Version - -# requirement/s: -# policy: read, write, policy, test -:local adminEmail "admin@example.com" -:local startDelay "90s" - -# if you run this script at "startup", -# the following indicates the time for the internet to go "up" -# ToDo: Find it out dynamically -# :delay $startDelay - -:log info "Checking for new version of RouterOS..." - -/system package update - -check-for-updates once - -:local versionStatus -:local deviceIdentity [/system identity get name] - -:do { - :delay 3s - - :set $versionStatus [get status] - # alternative way to get the above info - # :set $versionStatus ([print as-value]->"status") -} while=( $versionStatus = "finding out latest version..." ) - -:local installedVersion [get installed-version] -:local latestVersion [get latest-version] - -:if ( $versionStatus = "New version is available" ) do={ -# alternative method -# :if ( installedVersion != $latestVersion ) do={ - :log info "A new update is available for Router OS and an email is probably sent to $adminEmail." - /tool e-mail send to="$adminEmail" \ - subject="[Mikrotik $deviceIdentity] Software Update is Available" \ - body="A new update is available for your MikroTik device: \"$deviceIdentity\" ... - - Installed Version: $installedVersion - Latest Version: $latestVersion - " -} else={ - :log info "Router OS is already up to date." -} diff --git a/scripts/check-firmware-rb.rsc b/scripts/firmware-check-rb.rsc similarity index 82% rename from scripts/check-firmware-rb.rsc rename to scripts/firmware-check-rb.rsc index af7a164..abea618 100644 --- a/scripts/check-firmware-rb.rsc +++ b/scripts/firmware-check-rb.rsc @@ -6,6 +6,9 @@ # $adminEmail :global adminEmail +:if ([:typeof $adminEmail] = "nothing" || $adminEmail = "") do={ + :log error "adminEmail is not defined or nil."; :error "Error: Check the log"; } + :local oldVersion :local newVersion diff --git a/scripts/check-firmware-ros.rsc b/scripts/firmware-check-ros.rsc similarity index 87% rename from scripts/check-firmware-ros.rsc rename to scripts/firmware-check-ros.rsc index 69441f4..6e926ad 100644 --- a/scripts/check-firmware-ros.rsc +++ b/scripts/firmware-check-ros.rsc @@ -6,6 +6,9 @@ # $adminEmail :global adminEmail +:if ([:typeof $adminEmail] = "nothing" || $adminEmail = "") do={ + :log error "adminEmail is not defined or nil."; :error "Error: Check the log"; } + :local versionStatus :log info "\nChecking for new version of Router OS..." diff --git a/scripts/firmware-check.rsc b/scripts/firmware-check.rsc new file mode 100644 index 0000000..31098ff --- /dev/null +++ b/scripts/firmware-check.rsc @@ -0,0 +1,68 @@ +# Alert upon new Router OS Version and pending RouterBoard firmware update! + +# requirement/s: +# policy: read, write, policy, test +# active internet +# $adminEmail + +:global adminEmail +:if ([:typeof $adminEmail] = "nothing" || $adminEmail = "") do={ + :log error "adminEmail is not defined or nil."; :error "Error: Check the log"; } + +:local versionStatus + +:log info "\nChecking for new version of Router OS..." + +/system package update +check-for-updates once + +:do { + :delay 3s + + :set $versionStatus [get status] + # alternative way to get the above info + # :set $versionStatus ([print as-value]->"status") +} while=( $versionStatus = "finding out latest version..." ) + +:local installedVersion [get installed-version] +:local latestVersion [get latest-version] + +:if ( $versionStatus = "New version is available" ) do={ +# alternative method +# :if ( installedVersion != $latestVersion ) do={ + :log info "A new update is available for Router OS." + /tool e-mail send to="$adminEmail" \ + subject="Software Update is Available" \ + body="A new Router OS update is available... + + Installed Version: $installedVersion + Latest Version: $latestVersion + " +} else={ + :log info "Router OS is up to date." +} + +# Notify to upgrade RouterBoard Firmware + +# requirement/s: +# policy: read, write, policy, test +# active internet +# $adminEmail + +:global adminEmail +:local oldVersion +:local newVersion + +:log info "\nChecking for pending Routerboard firmware update..." + +/system routerboard + :set oldVersion [get current-firmware] + :set newVersion [get upgrade-firmware] + +:if ( $oldVersion != $newVersion ) do={ + :log info "RouterBoard firmware can be upgraded from $oldVersion to $newVersion \n" + /tool e-mail send to="$adminEmail" subject="RouterBoard firmware upgrade!" \ + body="An upgrade from $oldVersion to $newVersion is pending!" +} else={ + :log info "RouterBoard Firmware is up to date." +} diff --git a/scripts/ros6-lteLogger2.rsc b/scripts/ros6-lteLogger2.rsc deleted file mode 100644 index 41f7a35..0000000 --- a/scripts/ros6-lteLogger2.rsc +++ /dev/null @@ -1,41 +0,0 @@ -# Source: https://forum.mikrotik.com/viewtopic.php?t=178312 - -/system script job remove [find script=lteLogger2] - -/system scheduler -remove [find name=lteLogger2] -add interval=1m name=lteLogger2 on-event="#Script WatchDog for script name:\r\ - \nlocal ScriptName lteLogger2\r\ - \n\r\ - \n\r\ - \nlocal ScriptRuningInstances [:len [system script job find script=\$ScriptName]]\r\ - \nif ( \$ScriptRuningInstances = 0) do={/system script run \$ScriptName};\r\ - \nif ( \$ScriptRuningInstances = 1) do={};\r\ - \nif ( \$ScriptRuningInstances >= 2) do={system script job remove [find script=\$ScriptName]};\r\ - \n\r\ - \n" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-date=dec/23/2019 start-time=07:31:44 - - -/system script -remove [find name=lteLogger2] -add name=lteLogger2 source="#:local watchItems pin-status,functionality,registra\ - tion-status,current-cellid,enb-id,sector-id,phy-cellid,access-technology,primary-band,ca-band,rssi\r\ - \n:local watchItems current-cellid,enb-id,primary-band,ca-band\r\ - \n:local watchFreq 3s\r\ - \n:local lteInfo\r\ - \n:local prevLteInfo ({})\r\ - \n:while (true) do={\r\ - \n\t:do {:set lteInfo [/interface lte info lte1 once as-value]} on-error={}\r\ - \n\t:foreach m in=\$watchItems do={\r\ - \n\t\t:if ((\$lteInfo->\$m)!=(\$prevLteInfo->\$m)) do={\r\ - \n\t\t\t:put (\$m.\": \".(\$prevLteInfo->\$m).\" -> \".(\$lteInfo->\$m))\r\ - \n\t\t\t:log warning (\$m.\": \".(\$prevLteInfo->\$m).\" -> \".(\$lteInfo->\$m))\r\ - \n\t\t\tlocal mpprev (\$prevLteInfo->\$m);\r\ - \n\t\t\tlocal mpnext (\$lteInfo->\$m);\r\ - \n\t\t\t:set (\$prevLteInfo->\$m) (\$lteInfo->\$m)\r\ - \n\t\t\t}\r\ - \n\t\t}\r\ - \n\t:delay \$watchFreq\r\ - \n\t}\r\ - \n\r\ - \n"