Opennet Firmware
on-helper.sh
gehe zur Dokumentation dieser Datei
1#!/bin/sh
2#
3# Opennet Firmware
4#
5# Copyright 2010 Rene Ejury <opennet@absorb.it>
6# Copyright 2014 Lars Kruse <devel@sumpfralle.de>
7#
8# Licensed under the Apache License, Version 2.0 (the "License");
9# you may not use this file except in compliance with the License.
10# You may obtain a copy of the License at
11#
12# http://www.apache.org/licenses/LICENSE-2.0
13#
14
15# Abbruch bei:
16# u = undefinierten Variablen
17# e = Fehler
18set -eu
19
20# fuer Entwicklungszwecke: uebermaessig ausfuehrliche Ausgabe aktivieren
21[ "${ON_DEBUG:-}" = "1" ] && set -x
22
23
24DEBUG="${DEBUG:-}"
25
26# siehe Entwicklungsdokumentation (Entwicklungshinweise -> Shell-Skripte -> Fehlerbehandlung)
27trap 'error_trap __main__ "$*"' EXIT
28
29
30# Schreibe eine log-Nachricht bei fehlerhaftem Skript-Abbruch
31# Uebliche Parameter sind der aktuelle Funktionsname, sowie Parameter der aufgerufenen Funktion.
32# Jede nicht-triviale Funktion sollte zu Beginn folgende Zeile enthalten:
33# trap 'error_trap FUNKTIONSNAME_HIER_EINTRAGEN "$*"' EXIT
34error_trap() {
35 # dies ist der Exitcode des Skripts (im Falle der EXIT trap)
36 local exitcode="$?"
37 local message="ERROR [trapped]: '$*'"
38 [ "$exitcode" = 0 ] && exit 0
39 msg_info "$message"
40 echo >&2 "$message"
41 exit "$exitcode"
42}
43
44
45# Minimieren aller Shell-Module durch Entfernen von Kommentar- und Leerzeilen
46# Alle Modul-Dateien werden gelesen, minimiert und anschliessend in eine Cache-Datei
47# geschrieben. Die Zeitstempel der Shell-Module werden bei jedem Start mit dem der
48# Cache-Datei verglichen und letztere bei Bedarf erneuert.
49# Diese Minimierung reduziert die Laufzeit bei einfachen Funktionsaufrufen um ca. 10%.
50ON_SHELL_MINIMIZED="${IPKG_INSTROOT:-}/tmp/on_shell_modules.cache"
51ON_SHELL_MODULES_DIR="${IPKG_INSTROOT:-}/usr/lib/opennet"
52ON_SHELL_MODULES=$(find "$ON_SHELL_MODULES_DIR" -maxdepth 1 -type f -name "*.sh")
53# shellcheck disable=SC2086
54ON_SHELL_MODULES_NEWEST=$( (ls -dtr "$ON_SHELL_MODULES_DIR" $ON_SHELL_MODULES "$ON_SHELL_MINIMIZED" 2>/dev/null || true) | tail -1)
55# shellcheck disable=SC2046
56[ "$ON_SHELL_MODULES_NEWEST" != "$ON_SHELL_MINIMIZED" ] && \
57 grep -vh "^[[:space:]]*#" $(echo "$ON_SHELL_MODULES" \
58 | grep -vF "on-helper.sh") \
59 | sed 's/^[[:space:]]\+//' \
60 | grep -v "^$" \
61 >"${ON_SHELL_MINIMIZED}.$$" && mv "${ON_SHELL_MINIMIZED}.$$" "$ON_SHELL_MINIMIZED"
62# shellcheck disable=SC1090
63. "$ON_SHELL_MINIMIZED"
64
65
66clear_caches() {
67 rm -f "$ON_SHELL_MINIMIZED"
69}
msg_info(message)
Informationen und Fehlermeldungen ins syslog schreiben.
Definition: core.sh:15
clear_cache_opennet_opkg()
Lösche die eventuell vorhandene opennet-opkg-Konfiguration (z.B. nach einem Update).
Definition: modules.sh:70
set eu grep root::etc shadow exit if command v chpasswd dev null
Definition: on-password:12