FTP Upload von FritzBox --> Internet

TomTomNavigator

Mitglied
Mitglied seit
24 Aug 2007
Beiträge
643
Punkte für Reaktionen
4
Punkte
18
Hallo!

Ich hab da mal ne Frage...
Es muss doch irgendwie möglich sein, der FritzBox zu sagen, das sie alles was sich auf den USB Stick befindet auf einen Server hochläd.
Muss ja keine GUI haben, einfach per Telnet.
Quasi umgekehrtes wget.
Das wget im Paket des Rapidshare Downloaders ist ganz prima, so habe ich meine Server geleert und möchte jetzt alles auf einen Server packen.
Ich bräuchte jetzt also ein ftp. Serveradresse, user und passwort eintragen und dann läds alles rauf, wäre super, da mein Anschluss hier nicht so viel in Sachen Upload hergibt.

Hat jemand einen Tipp?
Danke schon mal.
 
Mit Curl kannst du auch hochladen, Binary hier: http://www.ip-phone-forum.de/showthread.php?p=929498
Code:
find . -exec /pfad/zu/curl -u user:password --silent -T {} ftp://www.website.com/folder/path/ \;
Das sollte alle Dateien im aktuellen Verzeichnis hochladen, auch Rekursiv.
 
Hallo Acros,

wenn ich die Anfrage von TomTomNavigator richtig verstanden habe, sucht er nach einer Software-Lösung um die Dateien von seinem USB-Stick über mehrere Kanäle (ala RapidShare) Upzuloaden. :confused:

Da er aber nur eine Quelle hat (seinen eigenen USB-Stick) und nur über eine Leitung (mit 384er Upload) verfügt, wird das wohl nix werden. :mad:

Joe
 
Ne ne, ich suche einen ganz normalen FTP Client, sowas wie Filezilla oder ähnliches. Jedoch braucht das keinen riesigen Funktionsumfang zu haben, NUR uploaden auf einen Server (funpic.de z.B.) mit EINER Verbindung.
Also werde ich das mit Curl mal testen.
Acros hat echt Ahnung hier, echt toll. (Ich bin ja immer der mit den Problemen ^^)


Edit:

Jo klappt ganz gut. Alle Dateien werden aus dem Ordnern entnommen und auf den Server geladen.
Was für einen Befehl tipple ich den ein wenn ich die ganze Ordnerstruktur auf den Server verschieben will?
Also ich hab local folgende Ordner:
#links
#bilder
#html

und die Ordner möchte ich samt Inhalt auf den Server verschieben.
 
Zuletzt bearbeitet:
So, ich poste nochmal um den Beitrag nochmal nach oben zu pushen.
Das mit Curl klappt nicht ganz so wie ich mir das vorstellen:
Es entnimmt die Dateien aus den ganzen Ordnern, die auf den Stick sind, und läd alle in das angegebene FTP Verzeichnis.
Somit löst sich die ganze Ordnerstruktur auf, gibt ein großes Kuddelmuddel.
Gibt es denn eine Möglichkeit die gesamte Ordnerstruktur auf den FTP Server zu verschieben?
Oder ein FTP Binary?
Oder ein anderes Binary das FTP Upload beherrscht?
 
In der busybox gibt es ftpput und ftpget. Damit geht es ganz einfach:

Code:
Usage: ftpput [options] remote-host remote-file local-file

Store a local file on a remote machine via FTP

Options:
        -v, --verbose   Verbose
        -u, --username  Username to be used
        -p, --password  Password to be used
        -P, --port      Port number to be used

'nc' (netcat) ist auch ein nettes Werkzeug, um die Dateien wieder zu löschen.
 
Wow, das ging schnell!

Funktioniert auch, jedenfalls mit einer Datei.
Wie sag ich ftpput, dass es ein Verzeichnis uploaden soll?

So mach ichs mit einer Datei:

Code:
cd /var/media/ftp/USBFlashMemory-Partition-0-0/
./busybox ftpput -v -u tom -p 123456789 user.to.ohost.de test.txt test.txt
Connecting to user.to.ohost.de (213.202.225.44:21)
ftpput: cmd (null) (null)
ftpput: cmd USER tom
ftpput: cmd PASS 123456789
ftpput: cmd TYPE I (null)
ftpput: cmd PASV (null)
ftpput: cmd ALLO 366 (null)
ftpput: cmd STOR test.txt
ftpput: cmd (null) (null)
ftpput: cmd QUIT (null)
Gut, gut, nur wie mach ichs mit einem Verzeichnis (das vielleicht auch Unterverzeichnisse hat)?
Danke schonmal!
 
Folgendes Skript erstellen:

upload.sh:
Code:
#!/bin/sh
for file in $1/*
do
  if [ -f "$file" ]; then
    filename=`echo "$file" | sed -e 's/.*\///g'`
    /var/media/ftp/USBFlashMemory-Partition-0-0/busybox ftpput -v -u tom -p 123456789 user.to.ohost.de "$filename" "$file"
  fi
done

und ausführen:
./upload.sh /var/media/ftp/USBFlashMemory-Partition-0-0/verzeichnis

EDIT:
Mit Unterverzeichnissen müsste das so lauten:
Code:
#!/bin/sh
for file in `find $1/*`
do
..
Es werden dabei aber keine Verzeichnisse erstellt, sondern alles ins Root hochgeladen.
Dafür müsste man dann noch ein paar Dinge anpassen.

Existiert die Ordnerstruktur bereits auf dem Server?
 
Zuletzt bearbeitet:
Nein, diese existiert noch nicht, müsste erst angelegt werden.
Super Sache das du das hier für mich schreibst!

//EDIT:

Bin ich zu blöd?
Code:
# cd /var/media/ftp/USBFlashMemory-Partition-0-0/
# ls -lah
drwxr-xr-x    3 ftpuser  root        16.0k Dec  1 15:18 .
drwxr-xr-x    3 root     root            0 Dec  1 15:15 ..
drwxr-xr-x    2 ftpuser  root        16.0k Dec  1 14:25 Bilder
-rwxr-xr-x    1 ftpuser  root          244 Dec  1 15:18 upload.sh
# ./upload.sh /var/media/ftp/USBFlashMemory-Partition-0-0/Bilder/
-sh: ./upload.sh: not found
:confused:
Genau so läuft doch auch das starten des Rapidshare Dwonlaoders, das bring ich ja auch hin...
 
Zuletzt bearbeitet:
Naja. Es ist nichts Neues, da ich das Skript bereits fertig habe - ebenfalls zum Synchronisieren.

Es ist jetzt nur ein wenig angepasst, damit es auch mit Unterverzeichnissen funktioniert:

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

Ich denke, das ist bestimmt für viele interessant.
usage: ./upload.sh /var/media/usb/verzeichnis

EDIT:
Genau so läuft doch auch das starten des Rapidshare Dwonlaoders, das bring ich ja auch hin...

Ausführbar machen:
chmod +x upload.sh

EDIT2:
Obiges Skript (ftp-upload mit Unterverzeichnissen) habe ich jetzt nicht ausgiebig getestet. Könnten also noch Fehler drin sein. Bin gerade noch am ausbessern ;)

EDIT3:
Ausgebessert :)

EDIT4:
Oder direkt downloaden:
Code:
cd /var/media/ftp/usb
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] [host:port]
Die Defaultwerte für [remote_path],[user],[pass],[host: port] können am Anfang der Datei ftp_uploader.sh angepasst werden.
 
Zuletzt bearbeitet:
Also dann praktisch so starten:
Code:
chmod +x upload.sh /var/media/usb/verzeichnis


//Edit:

Wenn ich die Berechtigung setze, kommt folgendes
Code:
# chmod +r upload.sh
# ./upload.sh /var/media/ftp/USBFlashMemory-Partition-0-0/bilder/
-sh: ./upload.sh: not found
#

Geht nischt.... :(
 
Zuletzt bearbeitet:
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:

Code:
./busybox dos2unix -u upload.sh
auf die Datei aus. Dann sollte sie im Unix-Format sein.
 
Und was ist ein Unix konformer Editor?
Oder ich muss grad mal die andere Platte anhängen und in Ubuntu booten...

//EDIT:

Jo, jetzt kommt das:
# cd /var/media/ftp/USBFlashMemory-Partition-0-0/
# ./busybox dos2unix -u upload.sh
# ./upload.sh
-sh: ./upload.sh: Permission denied
#
 
Zuletzt bearbeitet:
Zum Starten entweder so
Code:
chmod +x upload.sh
./upload.sh /var/media/usb/verzeichnis
oder so
Code:
sh upload.sh /var/media/usb/verzeichnis
"chmod +r" alleine reicht nicht, und Leserechte sind normalerweise sowieso gesetzt.

Die Meldung "-sh: ./upload.sh: Permission denied" deutet auf fehlende Ausführungsrechte (+x) hin, nicht auf falsche Zeilenenden.
 
Die Meldung "-sh: ./upload.sh: Permission denied" deutet auf fehlende Ausführungsrechte (+x) hin, nicht auf falsche Zeilenende
Jep. Aber '-sh: ./upload.sh: not found' schon. Hatte vorher nicht die Dateiattribute beachtet.
 
Sodala, hab mal schnell Ubuntu gebootet, die Datei erstellt.
Und was soll ich sagen?
Es läuft!!!
SUPER!
Noch schöner wärs, wenn es noch tiefer in die Ordner gehen würde, also das Unterverzeichnis vom Unterverzeichnis, etc.

Aber DANKE DANKE DANKE !!!
 
Zuletzt bearbeitet:
Schau mal in Beitrag #10 (falls du dieses Skript nicht genommen hast). Bei mir funktioniert es mit den Unterverzeichnissen.
Musst halt nur die Variablen am Anfang anpassen (HOST, USER, PASS ...).

Ansonsten müsstest du mal die Ausgabe posten, falls da irgendein Fehler vorkommt (./upload.sh /path/to/upload > log.txt).
 
Ich test mal ein wenig rum, wenns Probleme gibt, meld ich mich!

Danke dir. :p
 
ich bekomme immer die fehlermeldung
sh: can´t open upload.sh

ich weis der Tread ist Alt;)
 
@Chrisiwbi: Hilfreich wäre die Info, was Du den genau gemacht hast und wie Du das Script aufrufst.

Ich fasse mal die Kurzversion von oben (http://www.ip-phone-forum.de/showpost.php?p=987446&postcount=10) zusammen:
Code:
cd /var/media/ftp/[USB-Verzeichnis]
wget [url]http://fritz.v3v.de/busybox/busybox[/url] -O busybox-tools
wget [url]http://fritz.v3v.de/ftp_uploader/ftp_uploader.sh[/url]
chmod +x ftp_uploader.sh
./ftp_uploader.sh [/var/path/to/upload] [remote_path] [user] [pass] [host:port]
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,046
Beiträge
2,244,990
Mitglieder
373,451
Neuestes Mitglied
Ayzham
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.