Seite 1 von 1
Verzweigungen werden nicth ausgeführt
Verfasst: Fr 29 Sep 2006, 12:05
von andreasM
hallo zusammen,
ich habe ein kleines Kopier-Skript...
Code: Alles auswählen
#!/bin/sh
if ls /mnt/filme/test34
cd /hdd
then mv * /mnt/filme
msgbox size=32 refresh=2 timeout=30 title="Transfer zur NSLU2 abgeschlossen" popup="Transfer ist beendet"
else
msgbox size=32 refresh=2 timeout=60 title="NSLU2 ist nicht erreichbar" popup="NSLU2 konnte nicht erreicht werden."
fi
exit 0
das Problem ist, dass die else-Bedingung nicht ausgeführt wird. Ich habe die NSLU für einen Test ausgeschaltet und dann das Skript gestartet - es kam auch eine Erfolgsmeldung, obwohl die Datei dann nicht verfügbar ist.
Kann mir da jemand einen Tipp geben?
Das zweite ist, warum kann ich das Plugin im Timer nicht einfach auswählen, sondern muss es händisch eintragen? Ich hatte woanders gelesen das man die Plugins auch einfach auswählen kann.
vielen Dank schon mal im vorraus
Andreas
Verfasst: Fr 29 Sep 2006, 13:19
von MOhlmann
#!/bin/sh
if ls /mnt/filme/test34 ;then
cd /hdd
then mv * /mnt/filme
msgbox size=32 refresh=2 timeout=30 title="Transfer zur NSLU2 abgeschlossen" popup="Transfer ist beendet"
else
msgbox size=32 refresh=2 timeout=60 title="NSLU2 ist nicht erreichbar" popup="NSLU2 konnte nicht erreicht werden."
fi
exit 0
Sollte dann gehn.
Gruß Michael
Verfasst: Fr 29 Sep 2006, 13:23
von DrStoned
Deine if-Abfrage kann so nicht funktionieren. Probiere mal das hier:
Code: Alles auswählen
#!/bin/sh
ls /mnt/filme/ # dient zum Aufwecken der Netzwerkfestplatte
sleep 3 # Verzögerung muss angepasst werden
if [ -e /mnt/filme/test34 ]; then
cd /hdd
mv * /mnt/filme
msgbox size=32 refresh=2 timeout=30 title="Transfer zur NSLU2 abgeschlossen" popup="Transfer ist beendet"
else
msgbox size=32 refresh=2 timeout=60 title="NSLU2 ist nicht erreichbar" popup="NSLU2 konnte nicht erreicht werden."
fi
exit 0
Dein Skript muss die Endung
*.sh haben also z.B.
sicherung.sh
Es benötigt ausserdem noch eine passende
*.cfg also z.B.
sicherung.cfg
Code: Alles auswählen
type=3
name=HDD-Sicherung - Daten sichern
desc=Filme auf Netzwerk sichern
needfb=0
needrc=0
needvtxtpid=0
needoffsets=0
Beide Dateien nach
/var/tuxbox/plugins/ kopieren. Die
*.sh ausführbar machen. Dann Plugins neu laden oder Box neu starten.
Verfasst: Fr 29 Sep 2006, 15:43
von andreasM
Hallo DrStoned & Michael,
danke für eure Antworten.
if [ -e mnt/filme/test34 ]; then
irgendwie klappt das nicht - es wird immer nur die Else - Anweisung ausgeführt.... vorher hatte zumindest das mv - Kommando immer geklappt.
hab jetzt auch schon if [ls -e /mnt/filme/test34]; then als Bedingungszeile verwendet, da das zumindest direkt auf der konsole die Datei zurückgibt, aber für das Plugin brachte das keine Änderung.
Was auch sehr störend ist : am ende des Skripts kommt immer eine Box - Pluginausgabe und als Text msgbox Message Box Version 1.52 - kann man das abstellen?
Derzeitig sieht der Code der sh-Datei so aus:
Code: Alles auswählen
#!/bin/sh
ls /mnt/filme/ >$inhalt
sleep 5
if [ls -e /mnt/filme/test34]; then
cd /hdd
mv * /mnt/filme
msgbox size=32 refresh=2 timeout=30 title="Transfer zur NSLU2 abgeschlossen" popup="Transfer ist beendet" $inhalt
else
msgbox size=32 refresh=2 timeout=60 title="NSLU2 ist nicht erreichbar" popup="NSLU2 konnte nicht erreicht werden."
fi
exit 0
Wenn alles nichts hilft nehm ich die Prüfung halt wieder raus - bisher hat das Plugin ja auch ohne Prüfung funktioniert... wär halt nur schön gewesen.
schöne Grüße
Andreas
Verfasst: Fr 29 Sep 2006, 15:45
von usul
andreasM hat geschrieben:if [ -e mnt/filme/test34 ]; then
if [ -e
/mnt/filme/test34 ]; then
Die Pfadangabe sollte schon stimmen. Sonst sucht er relativ zum aktuellen Verzeichnis.
cu
usul
Verfasst: Fr 29 Sep 2006, 16:17
von DrStoned
Sorry den
/ hatte ich vergessen.
#!/bin/sh
ls /mnt/filme/ >$inhalt
sleep 5
if [ls -e /mnt/filme/test34 ]; then
cd /hdd
mv * /mnt/filme
msgbox size=32 refresh=2 timeout=30 title="Transfer zur NSLU2 abgeschlossen" popup="Transfer ist beendet" $inhalt
else
msgbox size=32 refresh=2 timeout=60 title="NSLU2 ist nicht erreichbar" popup="NSLU2 konnte nicht erreicht werden."
fi
exit 0
Mach das
ls raus, dann funktionierts. Und stelle sicher, dass in Deinem Verzeichnis auf
/mnt/filme/ eine Datei namens
test34 existiert. Und nach
test34 muss ein Leerzeichen rein.
Wieso kopierst Du nicht einfach mein Beispiel? Habs jetzt oben korrigiert.
Die Messageboxanzeige bleibt drin, geht nur weg, wenn man statt
popup den Parameter
msg verwendet. Warum keine Ahnung, vermutlich wird da eine Variable übergeben, die das Neutrino für Skripte kurz anzeigt.
Verfasst: Fr 29 Sep 2006, 16:30
von andreasM
Hallo usul,
also test34 ist eine Datei. Die hab ich nur deswegen angelegt. Unter DOS kann man ja nach nul fragen. Meine Linux-Kenntnisse sind leider etwas angestaubt..
Wenn ich -e /mnt/filme/test34 auf der Kommandozeile (telnet dbox) eingebe, erhalte ich nur
müsste da dann nicht eine andere Rückgabe kommen?
Gibt es irgendwo eine Befehlsübersicht, was man alles ansprechen kann? Die Messagebox will ich eigendlich auch wegklicken können.
Schöne Grüße
Andreas
Verfasst: Fr 29 Sep 2006, 16:36
von DrStoned
Lies mal meinen meinen oberen Post durch, das
-e kann so nicht funktionieren, da es ein Parameter für
if ist.
http://www.selflinux.org/selflinux/html ... erung.html
Gibt es irgendwo eine Befehlsübersicht, was man alles ansprechen kann? Die Messagebox will ich eigendlich auch wegklicken können.
Für die Messagebox findest Du alle möglichen Parameter in der
readme.txt dieses Plugins.
Verfasst: Fr 29 Sep 2006, 17:09
von andreasM
vielen Dank - jetzt funktioniert es perfekt! (na ja die $inhalt wird nicht ausgegeben... aber das muss nicht sein)
Der Link auf die Shellprogrammierung ist wirklich absolut klasse. Werde mich mal da einarbeiten.
so klappt es jetzt - beide Bedingungen werden ausgeführt-je nachdem was zutrifft.
Code: Alles auswählen
#!/bin/sh
ls /mnt/filme/ >$inhalt
sleep 3
if [ -e /mnt/filme/test34 ]; then
cd /hdd
mv * /mnt/filme
msgbox size=32 refresh=2 timeout=30 title="Transfer zur NSLU2 abgeschlossen" popup="Transfer ist beendet" $inhalt
else
msgbox size=32 refresh=2 timeout=60 title="NSLU2 ist nicht erreichbar" popup="NSLU2 konnte nicht erreicht werden."
fi
exit 0
schöne Grüße
Andreas
Verfasst: Fr 29 Sep 2006, 17:43
von usul
andreasM hat geschrieben:(na ja die $inhalt wird nicht ausgegeben... aber das muss nicht sein)
ls /mnt/filme/ >$inhalt
Gehe mal in die Richtung (Die Art wie du $inhalt später einsetzt (als Parameter der messagebox) ist AFAIK aber falsch. Schau dafür nochmal in die Doku):
inhalt=`ls /mnt/filme/`
(Auch wirklich diese "Hochkommas" verwenden)
Zum testen auf der Shell kannst du:
inhalt=`ls /mnt/filme`; echo $inhalt
cu
usul
Verfasst: Fr 29 Sep 2006, 18:03
von andreasM
Hallo usul,
Gehe mal in die Richtung (Die Art wie du $inhalt später einsetzt (als Parameter der messagebox) ist AFAIK aber falsch. Schau dafür nochmal in die Doku):
inhalt=`ls /mnt/filme/`
danke für deinen Hinweis... in der Readme zur Messagebox bin ich zwar nicht fündig geworden, dafür im Code von mem-check. Das hab ich angepasst - und es funktioniert!
schöne Grüße
Andreas