[Eisfair] Lc3b6sungssuche Dateitransfer

Marcus Roeckrath marcus.roeckrath at gmx.de
Do Jun 2 22:10:16 CEST 2016


Hallo Carsten,

Carsten Lippert wrote:

> Auf einen FTP-Server (banana pi M3) werden die Bewegungsbilder einer
> Kamera übertragen und gesichert. Da die MicroSD "nur" 32GB besitzt,
> würde ich gerne diese Bilder ca. 5 min nach dem Booten eines
> eisfair-Servers auf die dort vorhandene Samba-Freigabe speichern und den
> Inhalt des FTP-Server Verzeichnisses löschen.
> 
> Warum so "kompliziert? Die Kamera und der FTP-Server sind 24h in
> Betrieb, der eisfair-Server aber nur bei Bedarf, wenn bestimmte Clients
> auch online sind.
> 
> Das bedeutet also, der FTP-Server dient als "Zwischenspeicher" bis die
> Bilder vom eisfair-Server abgeholt werden.
> 
> Nun meine Frage dazu: Gibt es ein Paket bzw. Pakete für den eisfair, mit
> denen dieses Vorhaben realisierbar wäre?

Dazu brauchts kein Paket, das geht mit Boardmitteln.

In die Datei /etc/init.d/local schreibst Du in den Startzweig der
case-Verzweigung rein.

       /usr/local/bin/my_pic_fetch &

Nun das (ungetestete) Skript /usr/local/my_pic_fetch:

#!/bin/sh

sleep 300

ftphost="ip oder hostname des ftp Severs"
ftpuser="name des ftp users"
ftppassword="password"
picpathserver="pfad/zu/den/bildern"

# Funktion zu Download und Löschen auf FTP-Server
fetchremove() {
ftp -i -n <$ftphost> >/dev/null <<EOF
user ${ftpuser} ${ftppassword}
get "${picpathserver]"/"${1}"
delete "${picpathserver}"/"${1}"
quit
EOF
}

# Hole Liste der Pics auf FTP-Server
tempfile=`mktemp -p /tmp`
ftp -i -n ${ftphost} > ${tempfile} 2>/dev/null <<EOF
user ${ftpuser} ${ftppassword}
ls "${picpathserver}"
quit
EOF

cd /hier/sollen/die/Bilder/hin

while read picfile ; do
  fetchremove "${picfile}"
done < ${tempfile}

rm -f ${tempfile}

Das Skript braucht Ausführungsrechte (0755).

Ähnlichen Code verwende ich in der Schule, um Dokumente zwischen lokalem und
externen Webserver zu synchronisieren.

Das delete in der Funktion fetchremove kann man ja in der Testphase erstmal
auskommentieren und zunächst mal manuell an der Konsole testen.

-- 
Gruss Marcus


Mehr Informationen über die Mailingliste Eisfair