diff options
-rw-r--r-- | unattended-lte-firmware-upgrade | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/unattended-lte-firmware-upgrade b/unattended-lte-firmware-upgrade new file mode 100644 index 0000000..3570c57 --- /dev/null +++ b/unattended-lte-firmware-upgrade @@ -0,0 +1,29 @@ +#!rsc +# RouterOS script: unattended-lte-firmware-upgrade +# Copyright (c) 2018-2019 Christian Hesse <mail@eworm.de> +# +# schedule unattended lte firmware upgrade + +:foreach interface in=[ / interface lte find ] do={ + :local firmware; + :local intname [ / interface lte get $interface name ]; + do { + :set firmware [ / interface lte firmware-upgrade $interface once as-value ]; + # strip the extra line break (TODO: remove when fixed upstream) + :set ($firmware->"latest") [ :pick ($firmware->"latest") 0 [ :find ($firmware->"latest") "\n" ] ]; + } on-error={ + :log debug ("Could not get latest LTE firmware version for interface " . $intname . "."); + } + + :if (($firmware->"installed") != ($firmware->"latest")) do={ + :log info ("Scheduling LTE firmware upgrade for interface " . $intname . "."); + / system script add name=($intname . "-firmware-upgrade") source=("# unattended-lte-firmware-upgrade\n" . \ + "/ system scheduler remove " . $intname . "-firmware-upgrade;\n" . \ + "/ system script remove " . $intname . "-firmware-upgrade;\n" . \ + "/ interface lte firmware-upgrade " . $intname . " upgrade=yes;\n" . \ + ":log info (\"LTE firmware upgrade finished, waiting for installation before reset.\");\n" . \ + ":delay 150s;\n" . \ + "/ interface lte at-chat " . $intname . " input=\"AT+RESET\";"); + / system scheduler add name=($intname . "-firmware-upgrade") on-event=($intname . "-firmware-upgrade") interval=1m; + } +} |