[3/4] nodewatcher: Only include subscripts result if executed successfully

Submitted by Fabian Blaese on April 19, 2020, 1:40 p.m.

Details

Message ID 20200419134020.1389582-3-fabian@blaese.de
State Superseded
Headers show

Commit Message

Fabian Blaese April 19, 2020, 1:40 p.m.
If a subscript exits with an exit status != 0, its output should not
be used. Therefore, it is discarded.

Other scripts should not be affected by this, so the execution of
nodewatcher is continued.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
---
 src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher | 4 ++++
 1 file changed, 4 insertions(+)

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
index 1226f49..f7b6778 100755
--- a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
+++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
@@ -29,6 +29,10 @@  crawl() {
 
 	for f in /usr/lib/nodewatcher.d/*.sh; do
 		tmp="$($f)"
+		if [ $? -ne 0 ]; then
+			debug "Error when executing subscript $1, discarding its result!"
+			continue
+		fi
 		DATA="$DATA$tmp"
 	done
 

Comments

Adrian Schmutzler April 19, 2020, 2:19 p.m.
Hallo,

wenn das Monitoring unvollständige Daten kriegt, ist das sehr eklig. Außerdem führt das dazu, dass der User u.U. nicht merkt, dass etwas kaputt ist, außer er liest regelmäßig seine Logs.

Eine entsprechende Prüfung macht Sinn, aber dann bitte exit 1, sonst haben wir damit keinen Spaß.

Wenn dann gar nichts mehr ans Monitoring raus geht, ist auch die Wahrscheinlichkeit höher, dass die Person in ihr Log schaut (oder das gesagt bekommt).

Nicht mehr sicher bin ich mir, was das $? macht, wenn davor eine Zuweisung gemacht wird. Die Zuweisung ist u.U. ja immer true?

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Fabian Bläse
> Sent: Sonntag, 19. April 2020 15:40
> To: franken-dev@freifunk.net
> Subject: [PATCH 3/4] nodewatcher: Only include subscripts result if executed
> successfully
> 
> If a subscript exits with an exit status != 0, its output should not be used.
> Therefore, it is discarded.
> 
> Other scripts should not be affected by this, so the execution of
> nodewatcher is continued.
> 
> Signed-off-by: Fabian Bläse <fabian@blaese.de>
> ---
>  src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> index 1226f49..f7b6778 100755
> --- a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> +++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> @@ -29,6 +29,10 @@ crawl() {
> 
>  	for f in /usr/lib/nodewatcher.d/*.sh; do
>  		tmp="$($f)"
> +		if [ $? -ne 0 ]; then
> +			debug "Error when executing subscript $1, discarding
> its result!"
> +			continue
> +		fi
>  		DATA="$DATA$tmp"
>  	done
> 
> --
> 2.26.0
Fabian Blaese April 19, 2020, 3:38 p.m.
exit 1 finde ich auch ok, führt halt dazu, dass ein kaputtes Subskript sämtliche Statusinfos aussetzen lässt.

On 19.04.20 16:19, mail@adrianschmutzler.de wrote:
> Nicht mehr sicher bin ich mir, was das $? macht, wenn davor eine Zuweisung gemacht wird. Die Zuweisung ist u.U. ja immer true?
$? enthält den Exitstatus des zuletzt ausgeführten Kommandos. Tatsächlich gehören da scheinbar auch Zuweisungen dazu (man lernt immer wieder was dazu.. :D), die Zuweisung einer $() Command Substitution überschreibt das aber.
Siehe auch im letzten Absatz hier: https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Simple-Command-Expansion

Das gilt dann aber wiederum nicht für Assignments einer "local"-Variable, weil local auch wieder ein Kommando ist.

Manchmal bin ich schon erstaunt, wie kaputt das alles ist.

Gruß
Fabian