PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Skript will nicht



Firebuster
21-09-2002, 18:27
Moin,
ich will nun endlich mal meine Webcam auf meine HP einbinden. Hierzu habe ich ein Script geschrieben (bzw. die einzelnen Zeilen woanders abgeschrieben), das aber als Ganzes nicht funktionieren will. Es soll alle 3 Minuten einen Schnappschuss machen und auf den Server hochladen. Der Schnappschuss mit Import des Datums geht, der Upload auch, aber in der Zeit liegt der Knackpunkt, das Skript meldet "line 33; syntax error: unexpected end of file"
Was koennte das sein? Ich bin nicht so der Skript-Programmierer und frage hier mal die Cracks.


#!/bin/bash
# Schleifen Anfang
while [ 1==1 ] ; do
# Datum in Datei schreiben
echo "Datum in datum.txt schreiben."
date > datum.txt
gqcam -d webcam01.jpg
# Datum und Text auf Bild montieren
# -fill '#f9f4f4' = Text Farbe setzen von Gimp holen
# -font '-adobe...' = Font setzen von Gimp holen
# -draw 'text 257,10 "text"' Text an Position 257,10 zeichnen
# webcam01.jpg = Dateiname der Montage
echo "Datum und Text auf Bild montieren."
mogrify -fill '#f9f4f4' -font '-adobe-courier-bold-r-normal-*-*-140-*-*-m-*-iso8859-1' -draw 'text 257,10 "Groschi\n@home"' 'webcam01.jpg'
mogrify -fill '#fff200' -font '-adobe-courier-bold-r-normal-*-*-140-*-*-m-*-iso8859-1' -draw 'text 30,230 "@datum.txt"' 'webcam01.jpg'
echo "Ftp Verbindung herstellen und Bild senden."
# ftp Verbindung herstellen und Bild senden
ncftp<<EOF
open -u foo -p bar home.arcor.de
set confirm-close no
cd bilder
put -f webcam01.jpg
quit
EOF

rm -f /home/carsten/webcam01.jpg
# 170 Sekunden warten
sleep 170
clear
# Schleifen Ende
done
exit 0

anda_skoa
21-09-2002, 18:32
aus man bash



while list; do list; done


Ich würde sagen, dir fehlt ein ; vor done

Ciao,
_

Firebuster
21-09-2002, 18:37
Wow, das ging aber schnell........
Nein, ist es nicht, weder ohne noch mit Leerzeichen vor done
Das Merkwuerdige ist, dass Line 33 die unter "exit 0" ist :confused:

anda_skoa
21-09-2002, 18:46
Kein Leerzeichen, ein Strichpunkt, auch Semikolon genannt.
Offensichtlich ist eben ein Befehl oder Sequenz nciht vollständig abgeschlossen, darum erwartet der bash Interpreter noch weitere Befehle, bzw den Abschluß.

Wie schon gesagt, ich tippe auf das ;

Ciao,
_

Firebuster
21-09-2002, 18:48
Sag ich doch,
; done und
;done
bringt das selbe Ergebnis wie ohne Semikolon :(

anda_skoa
21-09-2002, 19:14
Hmm, du hast recht, wenn man den Inhalt der while Schleife bis auf echo sleep und clear leert, dann geht es.

Kommentier mal den ganzen FTP Block aus und probiers dann.
Oder den obererm Teil.

Ciao,
_

Firebuster
21-09-2002, 19:39
Der Knackpunkt ist der FTP-Teil, das EOF.
Ohne EOF geht das Skript, aber das Programm ncftp beendet sich nicht, mit EOF ist der syntax error wieder da :(
Da werde ich morgen nochmal nachsehen.

fork
21-09-2002, 21:19
Ich hab' das Skript mal etwas aufgeräumt das man da mal was erkennen kann:
Was für ein Fehler tritt auf wenn du dieses Skript ausführst?



#!/bin/bash
# Schleifen Anfang
while :
do
# Datum in Datei schreiben
echo "Datum in datum.txt schreiben."
date > datum.txt

gqcam -d webcam01.jpg

# Datum und Text auf Bild montieren
# -fill '#f9f4f4' = Text Farbe setzen von Gimp holen
# -font '-adobe...' = Font setzen von Gimp holen
# -draw 'text 257,10 "text"' Text an Position 257,10 zeichnen
# webcam01.jpg = Dateiname der Montage

echo "Datum und Text auf Bild montieren."
mogrify -fill '#f9f4f4' -font '-adobe-courier-bold-r-normal-*-*-140-*-*-m-*-iso8859-1' \
-draw 'text 257,10 "Groschi\n@home"' 'webcam01.jpg'
mogrify -fill '#fff200' -font '-adobe-courier-bold-r-normal-*-*-140-*-*-m-*-iso8859-1' \
-draw 'text 30,230 "@datum.txt"' 'webcam01.jpg'

echo "Ftp Verbindung herstellen und Bild senden."
# ftp Verbindung herstellen und Bild senden

ncftp<<EOF
open -u foo -p bar home.arcor.de
set confirm-close no
cd bilder
put -f webcam01.jpg
quit
EOF

rm -f /home/carsten/webcam01.jpg
# 170 Sekunden warten
sleep 170
clear
# Schleifen Ende
done
exit 0

Firebuster
21-09-2002, 22:24
Strike! Das funktioniert! Ja, wer aufraeumt..........;)
Meine Webcam ist ab sofort hier (http://home.arcor.de/carsten.grosch/bilder/webcam01.jpg) zu bewundern :D :D :D
THX @ all !!!!!!!!!!!!!!!!!!!

Hans-Georg Normann
22-09-2002, 09:08
Habe den Thread erst zu spät entdeckt um mitmischen zu können. Aber wenn nicht klar ist, wann ein Script den Dienst quittiert, dann kann man shellscripte auch mit
bash -xv scriptname
sh -xv scriptnameaufrufen. Dann wirde jede ausgeführte Zeile mit angezeigt.

Hans