Skript für Datei Synchronisation über FTP

hanske

Neuer User
Mitglied seit
26 Mai 2010
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Hi,

ich suche nach einer Möglichkeit meine Fritzbox(7140) dazu zu bringen, in regelmäßigen Abständen Dateien vom USB Sitck mit einem externen Server über FTP abzugleichen.
Die Fritzbox soll also aktiv eine FTP verbindung aufbauen und bestimmte Dateien oder Ordner vom Stick ams USB Port hoch oder runterladen.

Bisher habe ich nur den FTP Zugang zur Box aktiviert.

Gibt es ein Skript welches ich dafür nutzen kann oder muss ich selbst was kompilieren.

Danke und Grüße
 
hallo,

kompilieren musst du nicht.

anhaltpunkte, für den lösungsansatz:
- shell skript reicht
- telnet zugang wird benötigt. ssh wird alternativ empfohlen
- wget und wput anschauen: wput ist evtl. in der busybox nicht dabei
--> andere bysybox holen
- evtl cron anschauen (weiß nicht, ob du es brauchst)

lege dir am besten auch eine passende signatur.

infos zum shell-skripting, (n)vi-editor findest du genug im netz. infos zu fritzbox-spezifischen methoden (telnet, debug.cfg usw.) findest du u.a. auf meiner homepage

deinen sh-skript kannst du dann bei fehler hier posten, wir werden diese schon wegkriegen.

gruß
 
Evtl. wäre ncftp auch etwas für dich. Gibt es in Freetz, im trunk. Siehe hier: klick
 
Danke für die Tipps.
Mein Code für die debug.cfg würde dann wohl etwa so aussehen:

Code:
SERVER="meinServer.de"
LOGIN=meinName
PASSWD=meinPassword
USB_MEDIA=USBDISK-Partition-0-1
USBPATH='/var/media/ftp/'$USB_MEDIA
LOCALPATH=$USBPATH/data/test.txt
REMOTEPATH=/var/media/ftp/USBDISK-Partition-0-1/data/test.txt

# auf mounten warten
while !([ -d $USBPATH ]); do sleep 5; done 


# Warten bis die FritzBox den Server erreichen kann
while !(ping -c 1 $SERVER); do sleep 10; done



# kontinuirlicher upload
while (true); do
 
 wput $LOCALPATH ftp://$LOGIN:$PASSWD@$SERVER
 #ncftpput -u $LOGIN -p $PASSWD -C $SERVER $LOCALPATH $REMOTEPATH
  sleep 1000
done

Darf ich denn einfach in der debug.cfg einen EndlosThread starten oder kann ich die Warteschleife in einem weitern Thread/Prozess auslagern.

Das Problem mit dem put ist, dass ich weder eine BusyBox mit wput gefunden habe noch ncftpput als binary finden kann.
Muss ich für letzteres das Freetz Package kompilieren?


Danke und Grüße
 
in der debug.cfg einen EndlosThread starten oder kann ich die Warteschleife in einem weitern Thread/Prozess auslagern.

Musst Du nicht, Du kannst auch ein Script mit der debug.cfg erzeugen, oder auf deinem FTP ablegen, sofern Du keine permanenten Speicher an der Box direkt hast, dieses dann beim Starten der Box mit wget laden lassen, und dann als Prozess im Hintergrund ausführen lassen.

Cron wäre natürlich noch interessant, sofern man das zu bestimmten Zeiten ausführen lassen will.

dass ich weder eine BusyBox mit wput gefunden habe

Falls es Dir hilft, mein Script welches wöchentlich (per Cron gestartet), meine USB Files auf meinen externen FTP spiegelt sieht so aus:
Code:
#!/bin/sh
# Stick - Content Backup script
# Script revision 002
# ---------------------------------------------------------------------
NOW=$(date +"%Y-%m-%d")    ; i=$(date +"%H%M%S") 
# Local System Setup
USBDIR="/var/media/ftp/uStor01"                    # USB Pfad
SCRIPTDIR="${USBDIR}/fb/backup"                    # Script Ort
TEMPDIR="${USBDIR}/tmp/backup"                    # Temp Ort
FLASHBU="${SCRIPTDIR}/flash-files"                    # Flash Backup Ort
BACKUPDIR="${USBDIR}/fb"                        # Ort der gesichert werden soll
BACKUPFILE="$NOW-$i-ST7170-Stick-full.tar.gz"            # Backupdateiname
BACKUPOLDD="22"                            # Max. Alter für BU Dateien in Tagen

# Remote FTP Setup
FTPSRV="ftp.server.tld"
FTPUSR="[email protected]"
FTPPAS="ftp-password"

# Script Start
# Sicherung wichtiger Systemfiles aus dem Flash
sh ${SCRIPTDIR}/bu-freetz-settings.sh
echo "cat /proc/partitions" > ${FLASHBU}/mtd-infoliste.txt ; cat /proc/partitions >> ${FLASHBU}/mtd-infoliste.txt
echo "cat /proc/mtd" >> ${FLASHBU}/mtd-infoliste.txt ; cat /proc/mtd >> ${FLASHBU}/mtd-infoliste.txt
cat /dev/mtdblock3 > ${FLASHBU}/mtdblock3
cat /dev/mtdblock4 > ${FLASHBU}/mtdblock4
cat /dev/mtdblock5 > ${FLASHBU}/mtdblock5
cat /dev/mtdblock6 > ${FLASHBU}/mtdblock6

# Datei erstellen
tar -zcvf ${TEMPDIR}/$BACKUPFILE $BACKUPDIR

# Datei an Server senden
ftpput -u ${FTPUSR} -p ${FTPPAS} ${FTPSRV} ${BACKUPFILE} ${TEMPDIR}/${BACKUPFILE}

# Stick bereinigen
find '/var/media/ftp/uStor01/tmp' ! -name \".gz\" -type f -mtime +${BACKUPOLDD} -exec rm {} \;
exit 0

Hierzu bleibt noch anzumerken,
für Dich düfte der Part "Datei an Server senden" am interessantesten sein;
sofern Du Daten holen willst, würde sich statt ftpput, ein ftpget anbieten;

ggf. sind aber ftpput und ftpget garnicht bei Dir vorhanden, vorher einfach mal auf der Konsole gucken, ob deine Busybox die Befehle kennt.

Grüße Lemur
 
Das Programm der Wahl hierfür ist rsync. Es muß aber auf dem Ziel-System unterstützt werden.
Und da die Box den Transfer initiieren soll, ist überhaupt kein Zugang zur Box dafür notwendig.
 
Danke,

ich muss jetzt wohl doch mal freetz kompilieren.
Im Moment habe ich wohl noch Probleme mit meinem Proxy.
DNS und Ping geht, aber svn und busybox download antworten nicht.

Kann mir jemand sagen welche Packages ich für wput, ftpput, rsync und cron mitkompilieren muss?

Grüße
 
Hi,

das Problem mit dem Proxy beim Freetz kompileren habe ich wie folgt gelöst:
Code:
export http_proxy=http://user:password@hostname:port
export https_proxy=http://user:password@hostname:port
export ftp_proxy=http://user:password@hostname:port
Insgesamt bin ich jetzt aber mit einer neuen BusyBox, die man sich auch als binary runterladen kann, glücklich geworden.
Ich benutze jetz folgenden Befehl zum uploaden:
Code:
./busybox ftpput -u $LOGIN -p $PASSWD -C $SERVER $LOCALPATH $REMOTEPATH
 
Kostenlos!

Statistik des Forums

Themen
248,919
Beiträge
2,305,081
Mitglieder
378,640
Neuestes Mitglied
vapep43913