MLD-5.x > x86 Systeme (PC)

MLD 5.2 Server-Host Communication unsauber

<< < (6/7) > >>

Atoq:

--- Quote from: clausmuus on January 23, 2025, 18:56:21 ---Nein, das ist fast richtig. Es fehlt nur ein $ bei $PING und Du solltest nicht bash sondern sh verwenden.
Hier meine verbesserte Version:

--- Code: ---#!/bin/sh

SERVER="192.168.0.15"

ping -c1 $SERVER
if $?  = 0 then
  exit 1
else
  exit 0
fi
--- End code ---

Noch einfacher müsste das auch so funktionieren:

--- Code: ---#!/bin/sh

SERVER="192.168.0.15"

! ping -c1 $SERVER

--- End code ---

--- End quote ---

Also das scheint irgendwie an dem Systeminterpreter zu liegen, der da irgendetwas missversteht und einen hohen Exit-Code zurück gibt...

Wenn ich das wie o.a. kopiere, in Notepad kopiere, als Datei "test" speichere und ins entsprechende Verzeichnis /etc/vdr/shutdown.d kopiere, zeigt mit der MC beim Aufruf mit Edit erstmal am Ende jeder Zeile ein "^M" an.
Wenn ich die im MC alle lösche und dann wieder aufrufe:
bash test
Führt er den Ping zwar aus, aber dann kommt
test: line 8: syntax error near unexpected token `else´
test: line 8: `else´

Was zum Henker läuft da schief?

Ich habe auch mal die nsora in eine Datei clients umkopiert und da versucht, die "$client_ip auszulesen, aber da erzählt mir der Bash-Parser dann immer was von "unexpected End of file" ?!?!

Atoq:
Das lag wohl am fehlenden ";" hinter der Bedingung des "if "  ;-)

Jetzt bin ich mal gespannt, was er gleich macht...

clausmuus:
Da fehlen auch eckige Klammern hinter dem if:

--- Code: ---#!/bin/sh

SERVER="192.168.0.15"

ping -c1 $SERVER
if [ $? = 0 ]; then
  exit 1
else
  exit 0
fi
--- End code ---

Außerdem muss die Datei ausführbar gemacht werden:

--- Code: ---chmod +x /etc/vdr/shutdown.d/...
--- End code ---

Atoq:
Okay, Dankeschön. :-)
Das mit dem "ausführbar machen" hat sich wohl erledigt, weil ich das "nsora"-skript in "clients" umkopiert und angepasst habe, damit der Server künftig auch dann nicht runterfährt, wenn der Raspberry mal ohne Mucken bei der Wiedergabe von Aufnahmen störungsfrei laufen sollte ;-)


--- Quote ---#!/bin/sh

. /etc/init.d/rc.functions
TEXTDOMAIN="nsora-nsora"

OLDIFS=$IFS
IFS=,
connections="$(LC_ALL=C netstat -n | grep ESTABLISHED)"
for client_ip in $NSORA_CLIENT_IP; do
   echo $client_ip
   if ping -c1 -w1 $client_ip;  then
      echo "$(gt 'No shutdown because client $client_ip is active.')"
      svdrpsend.sh -d "MESG $(gt 'No shutdown because client $client_ip is active.')"
      exit 1
   else
   echo "Shutdown !"
   fi
done
IFS=$OLDIFS

exit 0

--- End quote ---

Und das funktioniert augenscheinlich  8)

clausmuus:
Du kannst noch die "connections=..." Zeile entfernen, da die nicht mehr verwendet wird.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version