aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--accesslist-duplicates.capsman3
-rw-r--r--accesslist-duplicates.local3
-rw-r--r--accesslist-duplicates.template3
-rw-r--r--bridge-port-to-default3
-rw-r--r--bridge-port-toggle3
-rw-r--r--capsman-download-packages3
-rw-r--r--capsman-rolling-upgrade3
-rw-r--r--certificate-renew-issued3
-rw-r--r--check-certificates3
-rw-r--r--check-health3
-rw-r--r--check-lte-firmware-upgrade3
-rw-r--r--check-routeros-update3
-rw-r--r--cloud-backup3
-rw-r--r--collect-wireless-mac.capsman3
-rw-r--r--collect-wireless-mac.local3
-rw-r--r--collect-wireless-mac.template3
-rw-r--r--daily-psk.capsman3
-rw-r--r--daily-psk.local3
-rw-r--r--daily-psk.template3
-rw-r--r--dhcp-lease-comment.capsman3
-rw-r--r--dhcp-lease-comment.local3
-rw-r--r--dhcp-lease-comment.template3
-rw-r--r--dhcp-to-dns3
-rw-r--r--doc/bridge-port.md11
-rw-r--r--doc/capsman-download-packages.md7
-rw-r--r--doc/check-certificates.md2
-rw-r--r--doc/daily-psk.md13
-rw-r--r--doc/global-wait.md40
-rw-r--r--email-backup3
-rw-r--r--global-config2
-rw-r--r--global-config-overlay2
-rw-r--r--global-config.changes1
-rw-r--r--global-functions9
-rw-r--r--global-wait10
-rw-r--r--gps-track3
-rw-r--r--hotspot-to-wpa3
-rw-r--r--ipv6-update3
-rw-r--r--lease-script3
-rw-r--r--log-forward3
-rw-r--r--mode-button3
-rw-r--r--netwatch-notify3
-rw-r--r--ospf-to-leds3
-rw-r--r--packages-update3
-rw-r--r--ppp-on-up3
-rw-r--r--rotate-ntp3
-rw-r--r--sms-action3
-rw-r--r--sms-forward3
-rw-r--r--update-gre-address3
-rw-r--r--update-tunnelbroker3
-rw-r--r--upload-backup3
51 files changed, 137 insertions, 81 deletions
diff --git a/README.md b/README.md
index c10a660..616f4e9 100644
--- a/README.md
+++ b/README.md
@@ -165,7 +165,6 @@ Available Scripts
* [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 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)
* [Use WPA2 network with hotspot credentials](doc/hotspot-to-wpa.md)
* [Update configuration on IPv6 prefix change](doc/ipv6-update.md)
diff --git a/accesslist-duplicates.capsman b/accesslist-duplicates.capsman
index 4911760..54271c3 100644
--- a/accesslist-duplicates.capsman
+++ b/accesslist-duplicates.capsman
@@ -8,6 +8,9 @@
#
# !! Do not edit this file, it is generated from template!
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:local Seen [ :toarray "" ];
:local Shown [ :toarray "" ];
diff --git a/accesslist-duplicates.local b/accesslist-duplicates.local
index 84fafb3..3f783a4 100644
--- a/accesslist-duplicates.local
+++ b/accesslist-duplicates.local
@@ -8,6 +8,9 @@
#
# !! Do not edit this file, it is generated from template!
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:local Seen [ :toarray "" ];
:local Shown [ :toarray "" ];
diff --git a/accesslist-duplicates.template b/accesslist-duplicates.template
index 7161992..c14b630 100644
--- a/accesslist-duplicates.template
+++ b/accesslist-duplicates.template
@@ -9,6 +9,9 @@
# !! This is just a template! Replace '%PATH%' with 'caps-man'
# !! or 'interface wireless'!
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:local Seen [ :toarray "" ];
:local Shown [ :toarray "" ];
diff --git a/bridge-port-to-default b/bridge-port-to-default
index 286fb45..60e3112 100644
--- a/bridge-port-to-default
+++ b/bridge-port-to-default
@@ -6,6 +6,9 @@
# reset bridge ports to default bridge
# https://git.eworm.de/cgit/routeros-scripts/about/doc/bridge-port.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global BridgePortTo;
:global IfThenElse;
diff --git a/bridge-port-toggle b/bridge-port-toggle
index 78a64f7..9ad38cb 100644
--- a/bridge-port-toggle
+++ b/bridge-port-toggle
@@ -6,6 +6,9 @@
# toggle bridge ports between default and alt bridge
# https://git.eworm.de/cgit/routeros-scripts/about/doc/bridge-port.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global BridgePortTo;
:if ($BridgePortTo != "default") do={
diff --git a/capsman-download-packages b/capsman-download-packages
index b6bff3a..13537fa 100644
--- a/capsman-download-packages
+++ b/capsman-download-packages
@@ -7,6 +7,9 @@
# download and cleanup packages for CAP installation from CAPsMAN
# https://git.eworm.de/cgit/routeros-scripts/about/doc/capsman-download-packages.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global CleanFilePath;
:global DownloadPackage;
:global LogPrintExit;
diff --git a/capsman-rolling-upgrade b/capsman-rolling-upgrade
index 1f091b8..a765fb5 100644
--- a/capsman-rolling-upgrade
+++ b/capsman-rolling-upgrade
@@ -7,6 +7,9 @@
# upgrade CAPs one after another
# https://git.eworm.de/cgit/routeros-scripts/about/doc/capsman-rolling-upgrade.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global LogPrintExit;
:global ScriptLock;
diff --git a/certificate-renew-issued b/certificate-renew-issued
index 2eeaba0..2345f30 100644
--- a/certificate-renew-issued
+++ b/certificate-renew-issued
@@ -6,6 +6,9 @@
# renew locally issued certificates
# https://git.eworm.de/cgit/routeros-scripts/about/doc/certificate-renew-issued.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global CertIssuedExportPass;
:global LogPrintExit;
diff --git a/check-certificates b/check-certificates
index 39b7e2c..94ccc99 100644
--- a/check-certificates
+++ b/check-certificates
@@ -6,6 +6,9 @@
# check for certificate validity
# https://git.eworm.de/cgit/routeros-scripts/about/doc/check-certificates.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global CertRenewPass;
:global CertRenewTime;
:global CertRenewUrl;
diff --git a/check-health b/check-health
index 7fa45cb..8cb2cf3 100644
--- a/check-health
+++ b/check-health
@@ -6,6 +6,9 @@
# check for RouterOS health state
# https://git.eworm.de/cgit/routeros-scripts/about/doc/check-health.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global CheckHealthLast;
:global CheckHealthTemperature;
:global CheckHealthTemperatureDeviation;
diff --git a/check-lte-firmware-upgrade b/check-lte-firmware-upgrade
index a678fb6..ed3cb98 100644
--- a/check-lte-firmware-upgrade
+++ b/check-lte-firmware-upgrade
@@ -6,6 +6,9 @@
# check for LTE firmware upgrade, send notification
# https://git.eworm.de/cgit/routeros-scripts/about/doc/check-lte-firmware-upgrade.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global Identity;
:global SentLteFirmwareUpgradeNotification;
diff --git a/check-routeros-update b/check-routeros-update
index 412d84a..09127d3 100644
--- a/check-routeros-update
+++ b/check-routeros-update
@@ -6,6 +6,9 @@
# check for RouterOS update, send notification and/or install
# https://git.eworm.de/cgit/routeros-scripts/about/doc/check-routeros-update.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global Identity;
:global SafeUpdateNeighbor;
:global SafeUpdatePatch;
diff --git a/cloud-backup b/cloud-backup
index f92ee50..e4e527b 100644
--- a/cloud-backup
+++ b/cloud-backup
@@ -6,6 +6,9 @@
# upload backup to MikroTik cloud
# https://git.eworm.de/cgit/routeros-scripts/about/doc/cloud-backup.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global BackupPassword;
:global Identity;
diff --git a/collect-wireless-mac.capsman b/collect-wireless-mac.capsman
index fda401e..bf8e691 100644
--- a/collect-wireless-mac.capsman
+++ b/collect-wireless-mac.capsman
@@ -8,6 +8,9 @@
#
# !! Do not edit this file, it is generated from template!
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global Identity;
:global GetMacVendor;
diff --git a/collect-wireless-mac.local b/collect-wireless-mac.local
index f9c135c..15c0c9a 100644
--- a/collect-wireless-mac.local
+++ b/collect-wireless-mac.local
@@ -8,6 +8,9 @@
#
# !! Do not edit this file, it is generated from template!
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global Identity;
:global GetMacVendor;
diff --git a/collect-wireless-mac.template b/collect-wireless-mac.template
index 1d031fe..2198136 100644
--- a/collect-wireless-mac.template
+++ b/collect-wireless-mac.template
@@ -9,6 +9,9 @@
# !! This is just a template! Replace '%PATH%' with 'caps-man'
# !! or 'interface wireless'!
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global Identity;
:global GetMacVendor;
diff --git a/daily-psk.capsman b/daily-psk.capsman
index 10b3403..b66b750 100644
--- a/daily-psk.capsman
+++ b/daily-psk.capsman
@@ -9,6 +9,9 @@
#
# !! Do not edit this file, it is generated from template!
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global DailyPskMatchComment;
:global Identity;
diff --git a/daily-psk.local b/daily-psk.local
index ec03c1a..e7f908f 100644
--- a/daily-psk.local
+++ b/daily-psk.local
@@ -9,6 +9,9 @@
#
# !! Do not edit this file, it is generated from template!
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global DailyPskMatchComment;
:global Identity;
diff --git a/daily-psk.template b/daily-psk.template
index 590b1ea..8cf08e0 100644
--- a/daily-psk.template
+++ b/daily-psk.template
@@ -10,6 +10,9 @@
# !! This is just a template! Replace '%PATH%' with 'caps-man'
# !! or 'interface wireless'!
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global DailyPskMatchComment;
:global Identity;
diff --git a/dhcp-lease-comment.capsman b/dhcp-lease-comment.capsman
index b663a0a..3c0b9e9 100644
--- a/dhcp-lease-comment.capsman
+++ b/dhcp-lease-comment.capsman
@@ -8,6 +8,9 @@
#
# !! Do not edit this file, it is generated from template!
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global LogPrintExit;
:foreach Lease in=[ / ip dhcp-server lease find where dynamic=yes status=bound ] do={
diff --git a/dhcp-lease-comment.local b/dhcp-lease-comment.local
index 1d9eb08..dc2f708 100644
--- a/dhcp-lease-comment.local
+++ b/dhcp-lease-comment.local
@@ -8,6 +8,9 @@
#
# !! Do not edit this file, it is generated from template!
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global LogPrintExit;
:foreach Lease in=[ / ip dhcp-server lease find where dynamic=yes status=bound ] do={
diff --git a/dhcp-lease-comment.template b/dhcp-lease-comment.template
index 4007765..e3ca6d0 100644
--- a/dhcp-lease-comment.template
+++ b/dhcp-lease-comment.template
@@ -9,6 +9,9 @@
# !! This is just a template! Replace '%PATH%' with 'caps-man'
# !! or 'interface wireless'!
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global LogPrintExit;
:foreach Lease in=[ / ip dhcp-server lease find where dynamic=yes status=bound ] do={
diff --git a/dhcp-to-dns b/dhcp-to-dns
index 375e083..30ca63c 100644
--- a/dhcp-to-dns
+++ b/dhcp-to-dns
@@ -6,6 +6,9 @@
# check DHCP leases and add/remove/update DNS entries
# https://git.eworm.de/cgit/routeros-scripts/about/doc/dhcp-to-dns.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global Domain;
:global HostNameInZone;
:global Identity;
diff --git a/doc/bridge-port.md b/doc/bridge-port.md
index 167fa87..8cbe15b 100644
--- a/doc/bridge-port.md
+++ b/doc/bridge-port.md
@@ -33,11 +33,9 @@ There is also global configuration:
* `BridgePortTo`: specify the configuration to be applied by default
-Install [global-wait](global-wait.md) and add a scheduler to start with
-default setup on system startup:
+Add a scheduler to start with default setup on system startup:
- $ScriptInstallUpdate global-wait;
- / system scheduler add name=bridge-port-to-default on-event="/ system script { run global-wait; run bridge-port-to-default; }" start-time=startup;
+ / system scheduler add name=bridge-port-to-default on-event="/ system script run bridge-port-to-default;" start-time=startup;
Usage and invocation
--------------------
@@ -75,11 +73,6 @@ More configuration can be loaded by setting `BridgePortTo`:
* Interfaces `en1` and `en2` are unchanged.
* Interface `en3` is put in bridge `br-intern`.
-See also
---------
-
-* [Wait for configuration und functions](global-wait.md)
-
---
[◀ Go back to main README](../README.md)
[▲ Go back to top](#top)
diff --git a/doc/capsman-download-packages.md b/doc/capsman-download-packages.md
index 5acf914..8516ff4 100644
--- a/doc/capsman-download-packages.md
+++ b/doc/capsman-download-packages.md
@@ -19,11 +19,9 @@ Just install the script on CAPsMAN device:
$ScriptInstallUpdate capsman-download-packages;
-Optionally install [global-wait](global-wait.md) and add a scheduler to run
-after startup:
+Optionally add a scheduler to run after startup:
- $ScriptInstallUpdate global-wait;
- / system scheduler add name=capsman-download-packages on-event="/ system script { run global-wait; run capsman-download-packages; }" start-time=startup;
+ / system scheduler add name=capsman-download-packages on-event="/ system script run capsman-download-packages;" start-time=startup;
Only packages available in older version are downloaded. For initial setup
place the required packages to CAPsMAN package path (see
@@ -55,7 +53,6 @@ See also
--------
* [Run rolling CAP upgrades from CAPsMAN](capsman-rolling-upgrade.md)
-* [Wait for configuration und functions](global-wait.md)
---
[◀ Go back to main README](../README.md)
diff --git a/doc/check-certificates.md b/doc/check-certificates.md
index 6e4a851..318805d 100644
--- a/doc/check-certificates.md
+++ b/doc/check-certificates.md
@@ -44,7 +44,7 @@ Just run the script:
Alternatively running on startup may be desired:
- / system scheduler add name=check-certificates-startup on-event="/ system script { run global-wait; run check-certificates; }" start-time=startup;
+ / system scheduler add name=check-certificates-startup on-event="/ system script run check-certificates;" start-time=startup;
See also
--------
diff --git a/doc/daily-psk.md b/doc/daily-psk.md
index c6055d6..d472269 100644
--- a/doc/daily-psk.md
+++ b/doc/daily-psk.md
@@ -12,23 +12,23 @@ passphrase to a pseudo-random string daily.
Requirements and installation
-----------------------------
-Just install this script and [global-wait](global-wait.md).
+Just install this script.
Depending on whether you use CAPsMAN (`/ caps-man`) or local wireless
interface (`/ interface wireless`) you need to install a different script.
For CAPsMAN:
- $ScriptInstallUpdate daily-psk.capsman,global-wait;
+ $ScriptInstallUpdate daily-psk.capsman;
For local interface:
- $ScriptInstallUpdate daily-psk.local,global-wait;
+ $ScriptInstallUpdate daily-psk.local;
And add schedulers to run the script:
/ system scheduler add interval=1d name=daily-psk-nightly on-event="/ system script run daily-psk.local;" start-date=may/23/2018 start-time=03:00:00;
- / system scheduler add name=daily-psk-startup on-event="/ system script { run global-wait; run daily-psk.local; }" start-time=startup;
+ / system scheduler add name=daily-psk-startup on-event="/ system script run daily-psk.local;" start-time=startup;
These will update the passphrase on boot and nightly at 3:00.
@@ -46,11 +46,6 @@ Then add an access list entry:
Also notification settings are required 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)
diff --git a/doc/global-wait.md b/doc/global-wait.md
deleted file mode 100644
index bdceddf..0000000
--- a/doc/global-wait.md
+++ /dev/null
@@ -1,40 +0,0 @@
-Wait for configuration und functions
-====================================
-
-[◀ Go back to main README](../README.md)
-
-Description
------------
-
-The global scripts `global-config`, `global-config-overlay` and
-`global-functions` are run by scheduler at system startup. Running another
-script at system startup may result in race condition where configuration
-and/or function are not yet available. This script is supposed to wait
-for everything being prepared.
-
-Do **not** add this script `global-wait` to the `global-scripts` scheduler!
-It would inhibit the initialization of configuration and functions.
-
-Requirements and installation
------------------------------
-
-Just install the script:
-
- $ScriptInstallUpdate global-wait;
-
-... and add it to your scheduler, for example in combination with
-[bridge-port](bridge-port.md):
-
- / system scheduler add name=bridge-port-to-default on-event="/ system script { run global-wait; run bridge-port-to-default; }" start-time=startup;
-
-See also
---------
-
-* [Manage ports in bridge](bridge-port.md)
-* [Download packages for CAP upgrade from CAPsMAN](capsman-download-packages.md)
-* [Renew certificates and notify on expiration](check-certificates.md)
-* [Use wireless network with daily psk](daily-psk.md)
-
----
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
diff --git a/email-backup b/email-backup
index a60b701..7cd8222 100644
--- a/email-backup
+++ b/email-backup
@@ -6,6 +6,9 @@
# create and email backup and config file
# https://git.eworm.de/cgit/routeros-scripts/about/doc/email-backup.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global BackupPassword;
:global BackupSendBinary;
:global BackupSendExport;
diff --git a/global-config b/global-config
index 4b20fbe..bf8ff8a 100644
--- a/global-config
+++ b/global-config
@@ -8,7 +8,7 @@
# Make sure all configuration properties are up to date and this
# value is in sync with value in script 'global-functions'!
-:global GlobalConfigVersion 43;
+:global GlobalConfigVersion 44;
# This is used for DNS and backup file.
:global Domain "example.com";
diff --git a/global-config-overlay b/global-config-overlay
index e8d7913..3e374b1 100644
--- a/global-config-overlay
+++ b/global-config-overlay
@@ -9,7 +9,7 @@
# Make sure all configuration properties are up to date and this
# value is in sync with value in script 'global-functions'!
# Comment or remove to disable change notifications.
-:global GlobalConfigVersion 43;
+:global GlobalConfigVersion 44;
# Copy configuration from global-config here and modify it.
diff --git a/global-config.changes b/global-config.changes
index a27b43a..dcafb7c 100644
--- a/global-config.changes
+++ b/global-config.changes
@@ -47,6 +47,7 @@
41="Implemented migration mechanism for script updates.";
42="Made severity in terminal output colorful, with opt-out.";
43="Added queue for e-mail notifications to resend later on error.";
+ 44="Dropped script 'global-wait', all scripts wait on their own now.";
};
# Migration steps to be applied on script updates
diff --git a/global-functions b/global-functions
index bf09ad2..072164d 100644
--- a/global-functions
+++ b/global-functions
@@ -8,7 +8,7 @@
# https://git.eworm.de/cgit/routeros-scripts/about/
# expected configuration version
-:global ExpectedConfigVersion 43;
+:global ExpectedConfigVersion 44;
# global variables not to be changed by user
:global GlobalFunctionsReady false;
@@ -624,13 +624,6 @@
$LogPrintExit warning ("Policies differ for script " . $ScriptVal->"name" . \
" and its scheduler " . $SchedulerVal->"name" . "!") false;
}
- :if ($SchedulerVal->"name" != "global-scripts" && \
- $SchedulerVal->"start-time" = "startup" && \
- $SchedulerVal->"interval" = 0s && \
- !(($SchedulerVal->"on-event") ~ "\\brun global-wait\\b")) do={
- $LogPrintExit warning ("Scheduler " . $SchedulerVal->"name" . " starts on startup, " . \
- "without waiting for global-functions. Run 'global-wait' to avoid race conditions!") false;
- }
}
:if ([ :len $SourceNew ] = 0 && $ScriptUpdatesFetch = true) do={
diff --git a/global-wait b/global-wait
index edb156b..18f2fb8 100644
--- a/global-wait
+++ b/global-wait
@@ -1,13 +1,11 @@
#!rsc by RouterOS
# RouterOS script: global-wait
-# Copyright (c) 2020-2021 Christian Hesse <mail@eworm.de>
-# https://git.eworm.de/cgit/routeros-scripts/about/COPYING.md
-#
-# wait for global-functions to finish
-# https://git.eworm.de/cgit/routeros-scripts/about/doc/global-wait.md
:global GlobalFunctionsReady;
-
:while ($GlobalFunctionsReady != true) do={
:delay 500ms;
}
+
+:global LogPrintExit;
+
+$LogPrintExit warning ("This script 'global-wait' is now useless, please remove it from configuration.") true;
diff --git a/gps-track b/gps-track
index 1f7d228..5fbe240 100644
--- a/gps-track
+++ b/gps-track
@@ -6,6 +6,9 @@
# track gps data by sending json data to http server
# https://git.eworm.de/cgit/routeros-scripts/about/doc/gps-track.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global GpsTrackUrl;
:global Identity;
diff --git a/hotspot-to-wpa b/hotspot-to-wpa
index ca11775..09283cf 100644
--- a/hotspot-to-wpa
+++ b/hotspot-to-wpa
@@ -6,6 +6,9 @@
# add private WPA passphrase after hotspot login
# https://git.eworm.de/cgit/routeros-scripts/about/doc/hotspot-to-wpa.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global LogPrintExit;
:local MacAddress $"mac-address";
diff --git a/ipv6-update b/ipv6-update
index d5b15c4..4f0812c 100644
--- a/ipv6-update
+++ b/ipv6-update
@@ -6,6 +6,9 @@
# update firewall and dns settings on IPv6 prefix change
# https://git.eworm.de/cgit/routeros-scripts/about/doc/ipv6-update.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:local PdPrefix $"pd-prefix";
:global LogPrintExit;
diff --git a/lease-script b/lease-script
index 438df0f..a39a874 100644
--- a/lease-script
+++ b/lease-script
@@ -6,6 +6,9 @@
# run scripts on DHCP lease
# https://git.eworm.de/cgit/routeros-scripts/about/doc/lease-script.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global LogPrintExit;
:if ([ :typeof $leaseActIP ] = "nothing" || \
diff --git a/log-forward b/log-forward
index ae9a352..c4458b2 100644
--- a/log-forward
+++ b/log-forward
@@ -6,6 +6,9 @@
# forward log messages via notification
# https://git.eworm.de/cgit/routeros-scripts/about/doc/log-forward.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global Identity;
:global LogForwardFilter;
:global LogForwardFilterMessage;
diff --git a/mode-button b/mode-button
index 35c0899..cd94919 100644
--- a/mode-button
+++ b/mode-button
@@ -6,6 +6,9 @@
# act on multiple mode and reset button presses
# https://git.eworm.de/cgit/routeros-scripts/about/doc/mode-button.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global ModeButton;
:global LogPrintExit;
diff --git a/netwatch-notify b/netwatch-notify
index 9651841..d050b75 100644
--- a/netwatch-notify
+++ b/netwatch-notify
@@ -6,6 +6,9 @@
# monitor netwatch and send notifications
# https://git.eworm.de/cgit/routeros-scripts/about/doc/netwatch-notify.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global NetwatchNotify;
:global IfThenElse;
diff --git a/ospf-to-leds b/ospf-to-leds
index b899b50..32027db 100644
--- a/ospf-to-leds
+++ b/ospf-to-leds
@@ -6,6 +6,9 @@
# visualize ospf instance state via leds
# https://git.eworm.de/cgit/routeros-scripts/about/doc/ospf-to-leds.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global LogPrintExit;
:global ParseKeyValueStore;
diff --git a/packages-update b/packages-update
index 022a110..4a2f418 100644
--- a/packages-update
+++ b/packages-update
@@ -6,6 +6,9 @@
# download packages and reboot for installation
# https://git.eworm.de/cgit/routeros-scripts/about/doc/packages-update.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global DownloadPackage;
:global LogPrintExit;
:global ScriptFromTerminal;
diff --git a/ppp-on-up b/ppp-on-up
index 9de01b8..cf95e48 100644
--- a/ppp-on-up
+++ b/ppp-on-up
@@ -6,6 +6,9 @@
# run scripts on ppp up
# https://git.eworm.de/cgit/routeros-scripts/about/doc/ppp-on-up.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global LogPrintExit;
:local Interface $interface;
diff --git a/rotate-ntp b/rotate-ntp
index a0cc524..6578078 100644
--- a/rotate-ntp
+++ b/rotate-ntp
@@ -6,6 +6,9 @@
# rotate the ntp servers
# https://git.eworm.de/cgit/routeros-scripts/about/doc/rotate-ntp.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global NtpPool;
:global LogPrintExit;
diff --git a/sms-action b/sms-action
index a070cc9..4c39740 100644
--- a/sms-action
+++ b/sms-action
@@ -6,6 +6,9 @@
# run action on received SMS
# https://git.eworm.de/cgit/routeros-scripts/about/doc/sms-action.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global SmsAction;
:global LogPrintExit;
diff --git a/sms-forward b/sms-forward
index 3cfb3f0..abfea99 100644
--- a/sms-forward
+++ b/sms-forward
@@ -6,6 +6,9 @@
# forward SMS to e-mail
# https://git.eworm.de/cgit/routeros-scripts/about/doc/sms-forward.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global Identity;
:global IfThenElse;
diff --git a/update-gre-address b/update-gre-address
index 7dd4896..50d1373 100644
--- a/update-gre-address
+++ b/update-gre-address
@@ -7,6 +7,9 @@
# ipsec remote peer
# https://git.eworm.de/cgit/routeros-scripts/about/doc/update-gre-address.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global LogPrintExit;
/ interface gre set remote-address=0.0.0.0 disabled=yes [ find where !running !disabled ];
diff --git a/update-tunnelbroker b/update-tunnelbroker
index d014178..6cdb195 100644
--- a/update-tunnelbroker
+++ b/update-tunnelbroker
@@ -7,6 +7,9 @@
# update local address of tunnelbroker interface
# https://git.eworm.de/cgit/routeros-scripts/about/doc/update-tunnelbroker.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global CertificateAvailable;
:global LogPrintExit;
:global ParseKeyValueStore;
diff --git a/upload-backup b/upload-backup
index 155603f..e16a4e5 100644
--- a/upload-backup
+++ b/upload-backup
@@ -6,6 +6,9 @@
# create and upload backup and config file
# https://git.eworm.de/cgit/routeros-scripts/about/doc/upload-backup.md
+:global GlobalFunctionsReady;
+:while ($GlobalFunctionsReady != true) do={ :delay 500ms; }
+
:global BackupPassword;
:global BackupSendBinary;
:global BackupSendExport;