From c58a64be77d4fe0640616851af294300d60233c4 Mon Sep 17 00:00:00 2001 From: Harald Pfeiffer Date: Thu, 24 Mar 2022 17:37:10 +0100 Subject: InComm, +wiper --- erase-broken-modules/README.md | 18 ++++++++++++++++++ erase-broken-modules/wiper | 9 +++++++++ erase-broken-modules/wiper.rsc | 27 +++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 erase-broken-modules/README.md create mode 100755 erase-broken-modules/wiper create mode 100644 erase-broken-modules/wiper.rsc (limited to 'erase-broken-modules') diff --git a/erase-broken-modules/README.md b/erase-broken-modules/README.md new file mode 100644 index 0000000..32a993d --- /dev/null +++ b/erase-broken-modules/README.md @@ -0,0 +1,18 @@ +# Scenario + +For whatever reason, you end up with a MikroTīk device with broken modules. Whatever you do, they +will not disappear. Also, in my scenario – the user module was broken – one of two devices never applied +any update, and the other even did not remember most changes. + +The solution is to: + +1. Uninstall all packages that can be uninstalled (except for system) +1. Disable all packages that cannot be uninstalled (mostly because they are bundled) +1. Place an update to the device's root +1. Reboot + +You will then end up with an updated device, no other modules installed, and in 2/2 cases for me +all setting were still present. Of course a backup prior to this is still highly recommended. + +This folder contains an example rsc file managing the actions on the device and an example script +copying the update and firing the rsc. diff --git a/erase-broken-modules/wiper b/erase-broken-modules/wiper new file mode 100755 index 0000000..5c8a7f5 --- /dev/null +++ b/erase-broken-modules/wiper @@ -0,0 +1,9 @@ +#!/usr/bin/env sh + +MIKROTIK_HOSTNAME="banana" +NPK_VERSION="6.49.5" +ARCH="arm" + +scp wiper.rsc "${MIKROTIK_HOSTNAME}:wiper.rsc"||exit 1 +scp "routeros-${ARCH}-${NPK_VERSION}.npk" "${MIKROTIK_HOSTNAME}:routeros-${ARCH}-${NPK_VERSION}.npk"||exit 2 +ssh "$MIKROTIK_HOSTNAME" "/import wiper.rsc" diff --git a/erase-broken-modules/wiper.rsc b/erase-broken-modules/wiper.rsc new file mode 100644 index 0000000..dd6bd7a --- /dev/null +++ b/erase-broken-modules/wiper.rsc @@ -0,0 +1,27 @@ +# vim:syntax=rsc:ts=4 +# procedure: 1. try manually to uninstall a package. unless that works add it to pkgdis, if it works --> pkguninst. +# leave routeros-* in uninstall. +# 2. put an UPGRADE package into the root folder of the device, put this rsc file on a disk +# 3. execute the rsc file +# ...not yet tested with a downgrade package. +:global pkguninst {"lora";"ups";"gps";"ntp";"openflow";"user-manager";"multicast";"calea";"tr069-client";"routeros-arm"} +:global pkgdis {"ipv6";"wireless";"hotspot";"mpls";"routing";"ppp";"dhcp";"security";"advanced-tools"} + +# -------------------------- # + +#:put "uptime:" +:global uptime [/system resource get uptime] +:global cpu [/system resource get cpu] +:global arch [/system resource get architecture-name] +:put "CPU: $cpu ($arch) - Uptime: $uptime\n" +:put "Setting packages to disabled..." +:foreach pd in=$pkgdis do={ + /system package disable $pd +} +:put "Setting packages to uninstall..." +:foreach pu in=$pkguninst do={ + /system package uninstall $pu +} +:put "Rebooting..." + +/system reboot -- cgit v1.2.3