nodewatcher: fix parsing error

Submitted by Adrian Schmutzler on July 4, 2017, 10:56 a.m.

Details

Message ID 002a01d2f4b4$3e47cff0$bad76fd0$@adrianschmutzler.de
State Not Applicable
Headers show

Commit Message

Adrian Schmutzler July 4, 2017, 10:56 a.m.
Hallo,

der Teil mit dem stderr ist mir klar, aber kann mir mal jemand erklären
(oder nen Link schicken), wann man die eckigen Klammern jetzt braucht und
wann nicht?

Grüße

Adrian

-----Original Message-----
From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf Of
Tobias Klaus
Sent: Dienstag, 4. Juli 2017 00:37
To: franken-dev@freifunk.net
Subject: [PATCH] nodewatcher: fix parsing error

---
 src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

     else
         vpn_active="<vpn_active>0</vpn_active>"

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 6e0e538..f9d6e65 100755
--- a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
+++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
@@ -104,7 +104,7 @@  crawl() {
     fi
 
     #Checks whether either fastd or L2TP is connected
-    if [ pidof fastd >/dev/null ] || [ grep -q '1'
/sys/class/net/l2tp*/carrier ] ; then
+    if pidof fastd >/dev/null || grep -q '1' /sys/class/net/l2tp*/carrier
2> /dev/null ; then
         vpn_active="<vpn_active>1</vpn_active>"

Comments

Tobias Klaus July 4, 2017, 11:07 a.m.
Hey Adrian,

if wertet die Rückgabe von Kommandos aus. Sprich wenn dein Kommando bei Erfolg 
0 und bei Misserfolg was anderes ausgibt kann mans einfach so anführen. Und || 
bzw && sind ja auch für normale Kommandos so definiert.

Ein besonderes Kommando ist das "test"-Kommando(man test) das kann allerhand 
Sachen überprüfen und für die Lesbarkeit gibt es zusätzlich noch einen symlink 
auf diesen test-Befehl der "[" heißt und der verlangt, dass man am Ende noch 
ein "]" angibt...
Das was aussieht wie Syntax einer Programmiersprache bricht hier (wie fast 
immer bei bash/sh) wieder auf ein  entsprechendes Kommando herunter, das 
wiederum 0 oder was anderes zurück gibt.

Also braucht man [? immer wenn man was überprüfen will, das man mit "test" 
überprüfen kann... und ansonsten muss man sich ein anderes Kommando überlegen.

Achja zur verwirrung trägt natürlich noch bei, das man mit [ auch überprüfen 
kann ob es Ausgaben gab 
if [ "$(grep xy)" ] ;
und 
if grep -q xy ;
sind also oft quasi gleichwertig.

Ist also alles recht verwirrend und daher hat die ursprüngliche Zeile dir und 
mir auch so plausibel ausgesehen :-)

Viele Grüße
Tobias

Am Dienstag, 4. Juli 2017, 12:56:51 CEST schrieb Adrian Schmutzler:
> Hallo,
> 
> der Teil mit dem stderr ist mir klar, aber kann mir mal jemand erklären
> (oder nen Link schicken), wann man die eckigen Klammern jetzt braucht und
> wann nicht?
> 
> Grüße
> 
> Adrian
> 
> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf Of
> Tobias Klaus
> Sent: Dienstag, 4. Juli 2017 00:37
> To: franken-dev@freifunk.net
> Subject: [PATCH] nodewatcher: fix parsing error
> 
> ---
>  src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> index 6e0e538..f9d6e65 100755
> --- a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> +++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> @@ -104,7 +104,7 @@ crawl() {
>      fi
> 
>      #Checks whether either fastd or L2TP is connected
> -    if [ pidof fastd >/dev/null ] || [ grep -q '1'
> /sys/class/net/l2tp*/carrier ] ; then
> +    if pidof fastd >/dev/null || grep -q '1' /sys/class/net/l2tp*/carrier
> 2> /dev/null ; then
>          vpn_active="<vpn_active>1</vpn_active>"
>      else
>          vpn_active="<vpn_active>0</vpn_active>"