Compare commits

..

69 commits

Author SHA1 Message Date
Christian Hesse
11ac73aa9f Merge branch 'dhcp-to-dns' into next 2026-05-14 23:01:24 +02:00
Christian Hesse
1972e982a7 bump required RouterOS version for all scripts 2026-05-14 23:01:24 +02:00
Christian Hesse
ac93e0ff69 dhcp-to-dns: allow to ignore for specific lease 2026-05-14 23:01:24 +02:00
Christian Hesse
8ea22a65a1 global-functions: $NetMask6: use shift operator...
... and drop the workaround. This requires RouterOS 7.22beta3.
2026-05-14 23:01:24 +02:00
Christian Hesse
063cc05c07 update list of contributors 2026-05-14 23:01:24 +02:00
Christian Hesse
3f12a3774a Merge branch 'break-in-loop' into next 2026-05-14 23:01:24 +02:00
Łukasz Witkowski
2888965853 dhcp-to-dns: allow to specify domain for CNAMEs...
... in network or lease.
2026-05-14 23:01:24 +02:00
Christian Hesse
c97ee7ade5 Merge branch 'continue-in-loop' into next 2026-05-14 23:01:24 +02:00
Christian Hesse
f81b2751da telegram-chat: fix indention 2026-05-14 23:01:24 +02:00
Łukasz Witkowski
50d522044f dhcp-to-dns: set $LeaseInfo 2026-05-14 23:01:24 +02:00
Christian Hesse
0d6602468a Merge branch 'early-exit-with-exit' into next 2026-05-14 23:01:24 +02:00
Christian Hesse
a5fa184211 dhcp-to-dns: fix indention 2026-05-14 23:01:24 +02:00
Christian Hesse
0e1a7ed99a telegram-chat: use :break in loop 2026-05-14 23:01:24 +02:00
Łukasz Witkowski
7f842705c8 dhcp-to-dns: convert DNS names to lower case 2026-05-14 23:01:24 +02:00
Christian Hesse
e17be56961 global-functions: deprecate $ExitError 2026-05-14 23:01:24 +02:00
Christian Hesse
7a41a11e23 dhcp-to-dns: use another :continue in loop 2026-05-14 23:01:24 +02:00
Christian Hesse
41bdd9338d check-certificates: use :break in loop 2026-05-14 23:01:24 +02:00
Christian Hesse
54b35112ae dhcp-to-dns: support to ignore networks
Closes: https://github.com/eworm-de/routeros-scripts/issues/119
2026-05-14 23:01:24 +02:00
Christian Hesse
eae833b8ef update-tunnelbroker: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
43cfdba556 dhcp-to-dns: use :continue in loop 2026-05-14 23:01:24 +02:00
Christian Hesse
1fd267abb3 update-gre-address: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
18c6626c76 telegram-chat: use :continue in loop 2026-05-14 23:01:24 +02:00
Christian Hesse
a17b190e31 telegram-chat: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
6a19701de9 netwatch-dns: fix indention 2026-05-14 23:01:24 +02:00
Christian Hesse
0894e5c894 sms-forward: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
976d5758f1 netwatch-dns: use :continue in loop 2026-05-14 23:01:24 +02:00
Christian Hesse
26326e36ca sms-action: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
37cf732f5b netwatch-dns: fix indention 2026-05-14 23:01:24 +02:00
Christian Hesse
b9a8ee1908 ppp-on-up: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
a956c60117 netwatch-dns: use :continue in loop 2026-05-14 23:01:24 +02:00
Christian Hesse
19ac85cff8 packages-update: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
c9ca9be52e global-functions: $ScriptInstallUpdate: fix indention 2026-05-14 23:01:24 +02:00
Christian Hesse
181ccaa1b0 ospf-to-leds: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
743cab289a global-functions: $ScriptInstallUpdate: use :continue in loop 2026-05-14 23:01:24 +02:00
Christian Hesse
f91c7709bf netwatch-notify: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
202b0bea06 global-functions: $CleanName: use :continue in loop 2026-05-14 23:01:24 +02:00
Christian Hesse
2b53ab3d77 netwatch-dns: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
5ee0e0b017 fw-addr-lists: fix indention 2026-05-14 23:01:24 +02:00
Christian Hesse
7fe436e9aa log-forward: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
9e84dc8176 fw-addr-lists: use :continue in loop 2026-05-14 23:01:24 +02:00
Christian Hesse
4532586e19 ipv6-update: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
489856518c ipsec-to-dns: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
fd381e8ee2 hotspot-to-wpa-cleanup: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
f5d939b71b hotspot-to-wpa: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
693f6f8a67 gps-track: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
6451cc3c78 fw-addr-lists: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
8d0e3b4d77 firmware-upgrade-reboot: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
47ac839259 dhcpv6-client-lease: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
4055d1558e dhcpv4-server-lease: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
f101049b00 dhcp-to-dns: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
caedc471c4 dhcp-lease-comment: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
318520a9b1 daily-psk: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
96332f697b collect-wireless-mac: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
622bbc4234 check-routeros-update: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
6c686ff478 check-perpetual-license: early exit with :exit 2026-05-14 23:01:24 +02:00
Christian Hesse
ba49309cd7 Merge branch 'compare-ids' into next 2026-05-14 23:01:23 +02:00
Christian Hesse
cb0ed55604 check-lte-firmware-upgrade: early exit with :exit 2026-05-14 23:01:23 +02:00
Christian Hesse
1763acc725 global-functions: deprecate $HexToNum 2026-05-14 23:01:23 +02:00
Christian Hesse
746a53109f check-health: early exit with :exit 2026-05-14 23:01:23 +02:00
Christian Hesse
cb27a3c915 log-forward: fix indention 2026-05-14 23:01:23 +02:00
Christian Hesse
e550c77935 check-certificates: early exit with :exit 2026-05-14 23:01:23 +02:00
Christian Hesse
e8279ab437 log-forward: use comparison for ids
This was introduced with RouterOS 7.22beta1.

Initializing $LogForwardLast with boolean value looks odd, but this is
required to match the very first message.
2026-05-14 23:01:23 +02:00
Christian Hesse
02e0f0ab69 certificate-renew-issued: early exit with :exit 2026-05-14 23:01:23 +02:00
Christian Hesse
00757f808f capsman-rolling-upgrade: early exit with :exit 2026-05-14 23:01:23 +02:00
Christian Hesse
2d269f96d2 capsman-download-packages: early exit with :exit 2026-05-14 23:01:23 +02:00
Christian Hesse
4e3698edc1 backup-upload: early exit with :exit 2026-05-14 23:01:23 +02:00
Christian Hesse
65dd7e6a9b backup-partition: early exit with :exit 2026-05-14 23:01:23 +02:00
Christian Hesse
9a2cf4cad3 backup-email: early exit with :exit 2026-05-14 23:01:23 +02:00
Christian Hesse
a68ee9257f backup-cloud: early exit with :exit 2026-05-14 23:01:23 +02:00
25 changed files with 44 additions and 54 deletions

View file

@ -226,7 +226,7 @@ everything is up-to-date it will not produce any output.
If the update includes news or requires configuration changes a notification
is sent - in addition to terminal output and log messages.
![notification: news and changes](README.d/notification-news-and-changes.avif)
![news and changes notification](README.d/notification-news-and-changes.avif)
Adding a script
---------------

View file

@ -17,7 +17,6 @@ markdown -f toc,idanchor "${1}" | sed \
-e '/<h[1234] /s|-2[1789cd]-||g' \
-e '/<h[1234] /s|-3[f]-||g' \
-e '/^<pre>/s|pre|pre class="code" onclick="CopyToClipboard(this)"|g' \
-e '/<img src=".*" alt="[a-z]\+: .*" \/>/s|alt="\([a-z]\+\):|class="\1" alt="\1:|' \
-e '/The above link may be broken on code hosting sites/s|blockquote|blockquote style="display: none;"|'
sed \

View file

@ -1,4 +1,3 @@
</span>
<p class="foot">RouterOS Scripts documentation generated on <i>__DATE__</i> for <i>__VERSION__</i><br />
Copyright &copy; 2013-2026 Christian Hesse &lt;mail@eworm.de&gt;</p>

View file

@ -6,7 +6,7 @@
<script type="text/javascript" src="__GENERAL__/clipboard.js"></script>
</head><body>
<table class="head"><tr>
<table><tr>
<td><img src="__GENERAL__/eworm-meadow.avif" alt="eworm on meadow" /></td>
<td><img src="__GENERAL__/qr-code.png" alt="QR code: rsc.eworm.de" /></td>
<td class="head"><span class="top">RouterOS Scripts</span><br />
@ -14,4 +14,3 @@
</tr></table>
<hr />
<span class="markdown">

View file

@ -40,9 +40,9 @@ something that differentiates? Color it!</p>
<p>Then right-click, click "<i>Take Screenshot</i>" and finally select the
logo and download it.</p>
<p><img src="logo-color.d/browser-01.avif" class="screenshot" alt="screenshot: browser 01"></p>
<p><img src="logo-color.d/browser-02.avif" class="screenshot" alt="screenshot: browser 02"></p>
<p><img src="logo-color.d/browser-03.avif" class="screenshot" alt="screenshot: browser 03"></p>
<p><img src="logo-color.d/browser-01.avif" alt="Screenshot Browser 01"></p>
<p><img src="logo-color.d/browser-02.avif" alt="Screenshot Browser 02"></p>
<p><img src="logo-color.d/browser-03.avif" alt="Screenshot Browser 03"></p>
<p>(This example is with
<a href="https://www.mozilla.org/firefox/">Mozilla Firefox ↗️</a>. The workflow

View file

@ -26,7 +26,7 @@ This script uploads
### Sample notification
![notification: backup-cloud](backup-cloud.d/notification.avif)
![backup-cloud notification](backup-cloud.d/notification.avif)
Requirements and installation
-----------------------------

View file

@ -26,7 +26,7 @@ configuration export (`/export terse show-sensitive`) to external server.
### Sample notification
![notification: backup-upload](backup-upload.d/notification.avif)
![backup-upload notification](backup-upload.d/notification.avif)
Requirements and installation
-----------------------------

View file

@ -21,8 +21,8 @@ certificates that are still about to expire.
### Sample notifications
![notification: check-certificates warning](check-certificates.d/notification-01-warn.avif)
![notification: check-certificates renew](check-certificates.d/notification-02-renew.avif)
![check-certificates notification warning](check-certificates.d/notification-01-warn.avif)
![check-certificates notification renew](check-certificates.d/notification-02-renew.avif)
Requirements and installation
-----------------------------

View file

@ -40,27 +40,27 @@ sensors available in hardware:
#### CPU utilization
![notification: check-health cpu utilization high](check-health.d/notification-01-cpu-utilization-high.avif)
![notification: check-health cpu utilization ok](check-health.d/notification-02-cpu-utilization-ok.avif)
![check-health notification cpu utilization high](check-health.d/notification-01-cpu-utilization-high.avif)
![check-health notification cpu utilization ok](check-health.d/notification-02-cpu-utilization-ok.avif)
#### RAM utilization (low available RAM)
![notification: check-health ram utilization high](check-health.d/notification-03-ram-utilization-high.avif)
![notification: check-health ram utilization ok](check-health.d/notification-04-ram-utilization-ok.avif)
![check-health notification ram utilization high](check-health.d/notification-03-ram-utilization-high.avif)
![check-health notification ram utilization ok](check-health.d/notification-04-ram-utilization-ok.avif)
#### Voltage
![notification: check-health voltage](check-health.d/notification-05-voltage.avif)
![check-health notification voltage](check-health.d/notification-05-voltage.avif)
#### Temperature
![notification: check-health temperature high](check-health.d/notification-06-temperature-high.avif)
![notification: check-health temperature ok](check-health.d/notification-07-temperature-ok.avif)
![check-health notification temperature high](check-health.d/notification-06-temperature-high.avif)
![check-health notification temperature ok](check-health.d/notification-07-temperature-ok.avif)
#### PSU state
![notification: check-health state fail](check-health.d/notification-08-state-fail.avif)
![notification: check-health state ok](check-health.d/notification-09-state-ok.avif)
![check-health notification state fail](check-health.d/notification-08-state-fail.avif)
![check-health notification state ok](check-health.d/notification-09-state-ok.avif)
Requirements and installation
-----------------------------

View file

@ -26,7 +26,7 @@ upgrades. Currently supported LTE hardware:
### Sample notification
![notification: check-lte-firmware-upgrade](check-lte-firmware-upgrade.d/notification.avif)
![check-lte-firmware-upgrade notification](check-lte-firmware-upgrade.d/notification.avif)
Requirements and installation
-----------------------------

View file

@ -22,8 +22,8 @@ and sends a notification to warn before expiration.
### Sample notifications
![notification: check-perpetual-license warn](check-perpetual-license.d/notification-01-warn.avif)
![notification: check-perpetual-license renew](check-perpetual-license.d/notification-02-renew.avif)
![check-perpetual-license notification warn](check-perpetual-license.d/notification-01-warn.avif)
![check-perpetual-license notification renew](check-perpetual-license.d/notification-02-renew.avif)
Requirements and installation
-----------------------------

View file

@ -37,8 +37,8 @@ automatically is supported.
### Sample notifications
![notification: check-routeros-update found](check-routeros-update.d/notification-01-found.avif)
![notification: check-routeros-update neighbor](check-routeros-update.d/notification-02-neighbor.avif)
![check-routeros-update notification found](check-routeros-update.d/notification-01-found.avif)
![check-routeros-update notification neighbor](check-routeros-update.d/notification-02-neighbor.avif)
Requirements and installation
-----------------------------
@ -88,7 +88,7 @@ Be notified when run from scheduler or run it manually:
If an update is found you can install it right away.
![screenshot: terminal](check-routeros-update.d/terminal.avif)
![Terminal](check-routeros-update.d/terminal.avif)
Installing script [packages-update](packages-update.md) gives extra options.

View file

@ -24,7 +24,7 @@ and modify it to your needs.
### Sample notification
![notification: collect-wireless-mac](collect-wireless-mac.d/notification.avif)
![collect-wireless-mac notification](collect-wireless-mac.d/notification.avif)
Requirements and installation
-----------------------------

View file

@ -21,7 +21,7 @@ passphrase to a pseudo-random string daily.
### Sample notification
![notification: daily-psk](daily-psk.d/notification.avif)
![daily-psk notification](daily-psk.d/notification.avif)
Requirements and installation
-----------------------------

View file

@ -37,8 +37,8 @@ log messages and forwards them via notification.
### Sample notifications
![notification: log-forward info](log-forward.d/notification-01-info.avif)
![notification: log-forward warn](log-forward.d/notification-02-warn.avif)
![log-forward notification info](log-forward.d/notification-01-info.avif)
![log-forward notification warn](log-forward.d/notification-02-warn.avif)
Requirements and installation
-----------------------------

View file

@ -33,7 +33,7 @@ Call the function `$InspectVar` with a variable as parameter:
$InspectVar $ModeButton;
![screenshot: InspectVar](inspectvar.d/01-inspectvar.avif)
![InspectVar](inspectvar.d/01-inspectvar.avif)
---
[⬅️ Go back to main README](../../README.md)

View file

@ -43,7 +43,7 @@ It expects an IP address in CIDR notation as argument.
$IPCalc 192.168.88.1/24;
![screenshot: IPCalc](ipcalc.d/01-ipcalc.avif)
![IPCalc](ipcalc.d/01-ipcalc.avif)
### IPCalcReturn
@ -53,7 +53,7 @@ the information in a named array.
:put ([ $IPCalcReturn 192.168.88.1/24 ]->"broadcast");
![screenshot: IPCalcReturn](ipcalc.d/02-ipcalcreturn.avif)
![IPCalcReturn](ipcalc.d/02-ipcalcreturn.avif)
---
[⬅️ Go back to main README](../../README.md)

View file

@ -38,7 +38,7 @@ and the [First Login ↗️](https://gotify.net/docs/first-login) setup. Once
you have a user and account you can start creating apps. Each app is an
independent notification feed for a device or application.
![screenshot: Create new app](notification-gotify.d/appsetup.avif)
![Create new app](notification-gotify.d/appsetup.avif)
On creation apps are assigned a *Token* for authentification, you will need
that in configuration.

View file

@ -74,7 +74,7 @@ and write first part of the configuration:
$SetupMatrixAuthenticate "@example:matrix.org" "v3ry-s3cr3t";
![screenshot: authenticate](notification-matrix.d/01-authenticate.avif)
![authenticate](notification-matrix.d/01-authenticate.avif)
The configuration is written to a new configuration snippet
`global-config-overlay.d/mod/notification-matrix`.
@ -94,7 +94,7 @@ the invite.
$SetupMatrixJoinRoom "!WUcxpSjKyxSGelouhA:matrix.org";
![screenshot: join room](notification-matrix.d/02-join-room.avif)
![join room](notification-matrix.d/02-join-room.avif)
The configuration is appended to the configuration snippet
`global-config-overlay.d/mod/notification-matrix`.

View file

@ -36,7 +36,7 @@ Configuration
Open Telegram, then start a chat with [BotFather ↗️](https://t.me/BotFather) and
create your own bot:
![screenshot: create new bot](notification-telegram.d/01-newbot.avif)
![create new bot](notification-telegram.d/01-newbot.avif)
Set that token from *BotFather* (use your own!) to `TelegramTokenId`, for
now just temporarily:
@ -49,7 +49,7 @@ then send your first message. Any text will do. On your device run
$GetTelegramChatId;
![screenshot: get chat id](notification-telegram.d/02-getchatid.avif)
![get chat id](notification-telegram.d/02-getchatid.avif)
Finally edit `global-config-overlay`, add `TelegramTokenId` with the token
from *BotFather* and `TelegramChatId` with your retrieved chat id. Then
@ -104,7 +104,7 @@ Tips & Tricks
You can use a profile photo for your bot to make it recognizable. Open the
chat with [BotFather ↗️](https://t.me/BotFather) and set it there.
![screenshot: set profile photo](notification-telegram.d/03-setuserpic.avif)
![set profile photo](notification-telegram.d/03-setuserpic.avif)
Have a look at my [Logo Color Changer](../../contrib/logo-color.html)
to create a colored version of this scripts' logo.

View file

@ -50,7 +50,7 @@ The function `$ScriptRunOnce` expects an URL (or name if
$ScriptRunOnce https://rsc.eworm.de/main/doc/mod/scriptrunonce.d/hello-world.rsc;
![screenshot: ScriptRunOnce](scriptrunonce.d/01-scriptrunonce.avif)
![ScriptRunOnce](scriptrunonce.d/01-scriptrunonce.avif)
Giving multiple scripts is possible, separated by comma.

View file

@ -24,8 +24,8 @@ optional parent host is not down to avoid false alerts.
### Sample notifications
![notification: netwatch-notify down](netwatch-notify.d/notification-01-down.avif)
![notification: netwatch-notify up](netwatch-notify.d/notification-02-up.avif)
![netwatch-notify notification down](netwatch-notify.d/notification-01-down.avif)
![netwatch-notify notification up](netwatch-notify.d/notification-02-up.avif)
Requirements and installation
-----------------------------

View file

@ -22,7 +22,7 @@ A broadband interface with SMS support is required.
### Sample notification
![notification: sms-forward](sms-forward.d/notification.avif)
![sms-forward notification](sms-forward.d/notification.avif)
Requirements and installation
-----------------------------

View file

@ -61,13 +61,13 @@ containing `! identity` (exclamation mark, optional space and system's
identity). To query all dynamic ip addresses form a device named "*MikroTik*"
send `! MikroTik`, followed by `/ip/address/print where dynamic;`.
![screenshot: chat to specific device](telegram-chat.d/01-chat-specific.avif)
![chat to specific device](telegram-chat.d/01-chat-specific.avif)
Devices can be grouped to chat with them simultaneously. The default group
"*all*" can be activated by sending `! @all`, which will make all devices
act on your commands.
![screenshot: chat to all devices](telegram-chat.d/02-chat-all.avif)
![chat to all devices](telegram-chat.d/02-chat-all.avif)
Send a single exclamation mark or non-existent identity to make all
devices passive again.
@ -78,7 +78,7 @@ Let's assume you received a message from a device before, and want to send
a command to that device. No need to activate it, you can just reply to
that message.
![screenshot: reply to message](telegram-chat.d/03-reply.avif)
![reply to message](telegram-chat.d/03-reply.avif)
Associated messages are cleared on device reboot.

View file

@ -42,12 +42,6 @@ div.content {
hr {
clear: both;
}
img.notification {
box-shadow: 5px 5px 7px gray;
}
img.screenshot {
box-shadow: 5px 5px 7px gray;
}
img.logo {
float: left;
/* border-radius: 50%; */
@ -72,7 +66,6 @@ pre {
pre.code {
background-color: #f8f8f8;
border: 1px solid #ccc;
box-shadow: 5px 5px 7px gray;
overflow: auto;
padding: 6px 10px;
border-radius: 3px;