Mhh.. wie hast du die Datei denn editiert? Hoffentlich nicht mit einem Windows-Editor. Wenn du Carriage returns im Shellskript hast, führt er es nicht aus. Muss ein Unix konformer Editor sein.
Führe mal ein:
auf die Datei aus. Dann sollte sie im Unix-Format sein.Code:./busybox dos2unix -u upload.sh
upload.sh:
Code:#!/bin/sh ### ANPASSEN : #### BUSYBOX="/var/media/ftp/usb/bin/busybox" USER="xxx" PASS="xxxxxxx" FTP_PATH="" HOST="host.de:21" ################ for file in `find $1//*` do if [ ! -f "$file" ]; then NEW_PATH=`echo "$file" | $BUSYBOX sed -e 's/.*\/\/\(.*\)/\1/g'` echo "USER $USER" > /var/tmp/nc_ftp_cmd echo "PASS $PASS" >> /var/tmp/nc_ftp_cmd echo "CWD $FTP_PATH" >> /var/tmp/nc_ftp_cmd echo "MKD $NEW_PATH" >> /var/tmp/nc_ftp_cmd echo "QUIT" >> /var/tmp/nc_ftp_cmd cat /var/tmp/nc_ftp_cmd | $BUSYBOX nc $HOST rm /var/tmp/nc_ftp_cmd fi done for file in `find $1//*` do if [ -f "$file" ]; then filename=`echo "$file" | sed -e 's/.*\///g'` NEW_PATH=`echo "$file" | $BUSYBOX sed -e 's/.*\/\/\(.*\)/\1/g'` $BUSYBOX ftpput -v -u $USER -p $PASS $HOST "$FTP_PATH/$NEW_PATH" "$file" fi done
...
for file in `find $1//*`
do
if [ -f "$file" ]; then
filename=`echo "$file" | sed -e 's/.*\///g'`
NEW_PATH=`echo "$file" | $BUSYBOX sed -e 's/.*\/\/\(.*\)/\1/g'`
$BUSYBOX ftpput -v -u $USER -p $PASS $HOST "$FTP_PATH/$NEW_PATH" "$file"
[COLOR="Red"]rm $file[/COLOR]
fi
done
SagHalt;1325934[code schrieb:cd /var/media/ftp/[USB-Verzeichnis]
wget http://fritz.v3v.de/busybox/busybox -O busybox-tools
wget http://fritz.v3v.de/ftp_uploader/ftp_uploader.sh
chmod +x ftp_uploader.sh
./ftp_uploader.sh [/var/path/to/upload] [remote_path] [user] [pass] [hostort][/code]
Wichtig sind die Zeilenenden.
Am einfachsten ist es mit einem Linux-Editor, zum Beispiel auf der Box.