Syntax gesucht: While... Do... oder If... Then... Else...

ao

Aktives Mitglied
Mitglied seit
15 Aug 2005
Beiträge
2,158
Punkte für Reaktionen
2
Punkte
38
Hallo, ich habe mit der 7170 das Phänomen, dass Files (z.B. für den bftpd) per debug.cfg nie nachgeladen werden (manuell mit nach telnet-Login geht es immer), weil die FB anfangs noch keinen Kontakt zu meinem Webspace hat.

Also habe ich folgendes probiert:
Code:
[COLOR=Red][COLOR=Black]while !(ping -c 1 www.meinwebspace.de); do
sleep 5
done[/COLOR][/COLOR]
...
Das hat aber den Haken, dass die debug.cfg gar nicht weiter abgearbeitet wird, wenn z.B. der Webspace mal down sein sollte.

Wie sieht denn die Syntax aus, wenn man nach längerem Warten (z.B. mit ping -c 5 ...) und negativem Ping eine alternative Schleife durchlaufen möchte, also alle debug.cfg-Befehle nach dem
bftpd -d -c /var/tmp/bftpd.conf?

Oder anders gefragt:
Wie bekommt Ihr es in den Griff, die debug.cfg weiterlaufen zu lassen, wenn bestimmte Kommandos nicht ausführbar sind (z.B. Nachladen vom Internet)?

Danke für Eure Hilfe!
 
Du kannst mit dem & Operator einen neuen Prozess in den Hintergrund schieben. z.B.:
Code:
/var/tmp/mein_nachladeskript.sh &
 
Hallo agent.orange,

wo liegt denn dein "webspace"? Im Internet, auf einem an die FB angeschlossenen PC oder auf einem USB-Gerät direkt an der Box?

Versuch doch bitte mal, nach einem Telnet-Login von der Box aus, den Ping auf deinen Webspace auszuführen.
Funktioniert der Download auf die Box, der Ping aber nicht, dann spielt dir wohl irgendeine Firewall einen Streich.

Joe
 
Ungefähr so?
18.06. Edit:
Code:
count=0
while ! ping -c 1 [URL="http://www.meinwebspace.de"]www.meinwebspace.de[/URL] && [ "$count" -lt "5" ]; do
  sleep 5
  let count=count+1
done
if [ "$count" -lt "5" ]; then
  #Webspace online
  echo 'online'
else
  #Webspace offline
  echo 'offline'
fi
MfG Oliver
 
Zuletzt bearbeitet:
@olistudent:
Super, genau das brauche ich. Aber es gibt dabei noch ein kleines Problem...
Code:
count=1
while [ ! $(ping -c 1 [COLOR=Blue]www.gmx.de[U][B]e[/B][/U][/COLOR]) ] && [ "$count" -lt "2" ]; do
  sleep 5
  let count=count+1
done
if [ "$count" -lt "2" ]; then
  #Webspace online
  echo 'online'
else
  #Webspace offline
  echo 'offline'
fi
Beachte die absichtlich falsche Schreibweise www.gmx.dee. => Ergebnis (war auch so zu erwarten):
# ./test.sh
ping: www.gmx.dee: Unknown host
ping: www.gmx.dee: Unknown host
offline
Und jetzt das - völlig unerwartete - Ergebnis mit www.gmx.de:
# ./test.sh
[: www.gmx.de: unknown operand
online
Warum bricht das Skript ab, wenn die Web-Adresse stimmt?

Auch ein Umschließen der URL mit Anführungszeichen löst das Problem nicht:
Code:
while [ ! $(ping -c 1 "www.gmx.de") ] && [ "$count" -lt "2" ]; do
Ich habe die Zeilen übrigens direkt mit nvi erzeugt, so dass eigentlich keine Zeilensprung-Probleme o.ä. beim Kopieren vom Windows- ins Unix-Format die Ursache sein sollten.

Könnt Ihr mir bitte nochmal weiterhelfen? Vielen Dank!

@danisahne:
Das ist auch eine prima Idee. So könnte ich LCR, bftpd und sonstige "Erweiterungen" doch eigentlich aus der debug.cfg auslagern.
Aber verschwindet das "mein_Nachlageskript.sh" o.ä. nicht nach dem Reboot der FB aus dem /var/tmp Verzeichnis?

@Joe_57:
Der Webspace liegt bei GMX (Mediacenter).
Ich greife über telnet aus dem lokalen Netzwerk auf meine FB zu.
Dabei klappte das Nachladen von bftpd, was sicherlich daran lag, dass die FB zu dem Zeitpunkt soweit war und GMX fand.

Wenn ich das aber über die debug.cfg mache, klappt es (bisher) nicht, da dann die FB noch nicht so weit ist und sie GMX noch nicht findet (so zumindest meine Vermutung).
 
Zuletzt bearbeitet:
while und ähnliche

Code:
while [color=blue][[/color] ! $(ping -c 1 www.gmx.de) [color=blue]][/color] && [ "$count" -lt "2" ]; do
 echo "tu was"
done
sollte so aussehen
Code:
while ! $(ping -c 1 www.gmx.de) && [ "$count" -lt "2" ]; do
 echo "tu was"
done
oder sogar so
Code:
while ! ping -c 1 www.gmx.de && [ "$count" -lt "2" ]; do
 echo "tu was"
done

@agent.orange: die Anführungsstriche hätten "$(....)" umschliessen müssen.

spblinux
 
agent.orange schrieb:
Das ist auch eine prima Idee. So könnte ich LCR, bftpd und sonstige "Erweiterungen" doch eigentlich aus der debug.cfg auslagern.
Aber verschwindet das "mein_Nachlageskript.sh" o.ä. nicht nach dem Reboot der FB aus dem /var/tmp Verzeichnis?
Das Skript mußt du natürlich in der debug.cfg erzeugen und dann starten. Den LCR würde ich auf jeden Fall in der debug.cfg (unverändert) lassen, damit die Updates dann auch noch problemlos klappen.

Mfg,
danisahne
 
@agent.orange:

Dein Webspace liegt also im GMX-Mediacenter.
Das benutzt doch WEBDAV. Bislang habe ich es leider nicht geschafft, von meiner FB 7050 (per wget) auf meinen GMX-Webspace zuzugreifen.
Ich vermute mal, dass dazu noch irgendwie das davfs nachgeladen werden muss.
Kannst du bitte mal den Zugriff (am besten an einem Beispiel) erläutern?
Oder wäre es besser, dafür einen neuen Thread aufzumachen?

Joe
 
Kostenlos!

Statistik des Forums

Themen
248,903
Beiträge
2,303,613
Mitglieder
378,538
Neuestes Mitglied
FraSche