add script 'early-erros'

This commit is contained in:
Christian Hesse 2020-04-18 23:20:29 +02:00
parent aedc314519
commit c8770efd72
3 changed files with 65 additions and 0 deletions

View file

@ -154,6 +154,7 @@ Available Scripts
* [Use wireless network with daily psk](doc/daily-psk.md)
* [Comment DHCP leases with info from access list](doc/dhcp-lease-comment.md)
* [Create DNS records for DHCP leases](doc/dhcp-to-dns.md)
* [Send notification with early errors](doc/early-errors.md)
* [Send backup via e-mail](doc/email-backup.md)
* [Wait for configuration und functions](doc/global-wait.md)
* [Send GPS position to server](doc/gps-track.md)

42
doc/early-errors.md Normal file
View file

@ -0,0 +1,42 @@
Send notification with early errors
===================================
[◀ Go back to main README](../README.md)
Description
-----------
RouterOS supports sending log messages via e-mail or to a syslog server.
However this does not work early after boot if network connectivity is not
yet established. For example log messages about reboot without proper
shutdown may be missed:
> router rebooted without proper shutdown, probably power outage
The script collects log messages with severity `error` and sends a
notification.
Requirements and installation
-----------------------------
Just install the script:
$ScriptInstallUpdate early-errors;
... and add a scheduler:
/ system scheduler add name=early-erros on-event=":global WaitTimeSync; / system script { run global-wait; \$WaitTimeSync; run early-errors; }" start-time=startup;
Configuration
-------------
The notifications just require notification settings for e-mail and telegram.
See also
--------
* [Wait for configuration und functions](global-wait.md)
---
[◀ Go back to main README](../README.md)
[▲ Go back to top](#top)

22
early-errors Normal file
View file

@ -0,0 +1,22 @@
#!rsc
# RouterOS script: early-errors
# Copyright (c) 2020 Christian Hesse <mail@eworm.de>
#
# send notification with early errors
# https://git.eworm.de/cgit/routeros-scripts/about/doc/early-errors.md
:global Identity;
:global SendNotification;
:local ErrCount [ / log print count-only where topics~"error" ];
:if ($ErrCount > 0) do={
:local Message ("The log on " . $Identity . " contains " . $ErrCount . \
" errors after " . [ / system resource get uptime ] . " uptime.\n");
:foreach Log in=[ / log find where topics~"error" ] do={
:local LogVal [ / log get $Log ];
:set Message ($Message . "\n" . [ :tostr ($LogVal->"topics") ] . \
" " . ($LogVal->"message"));
}
$SendNotification ("\E2\9A\A0 Early errors") ($Message);
}