Ich stand diese Woche bei einem Kunden vor dem Problem, dass von einem FTP Server regelmässig (alle 30 Sekunden) Daten herunter geladen und die Quelle gelöscht werden müssen.

Mit dem normalen DOS FTP Befehl hätte man das theoretisch auch umsetzen können, ich habe mich aber trotzdem für Cygwin und lftp entschlossen.

Die Installation von Cygwin kann man auf vielen Seiten nachlesen. Benötigt habe ich nur als zusätzliches Paket lftp.

Hier nun das Script:

#!/bin/bash

# Autor: Knut Herter
# Datum: 14.9.2023
# Bemerkung
#
# Dies Script lädt mittels lftp Mecom Dateien herunter und stellt diese
# in einem lokalen Ordner für den "Newsline-Recorder" bereit.
# Mit diesem werden die herunter geladenen Dateien für Newsline 
# aufbereitet
#


# Konfiguration
ftpServer="[Dein FTO-Server]"
ftpUser="[Dein Benutzername]"
ftpPassword="[Dein Passwort]"
remoteFolder="/"
localFolder="/cygdrive/f/Mecom"

cd $localFolder
while [ true ] ; do
clear
echo Beginne Verarbeitung
lftp <<EOF
open ftp://$ftpUser:$ftpPassword@$ftpServer
cd $remoteFolder
mirror --verbose  --Remove-source-files
bye
EOF

impanz=$(find $localFolder -type f | wc -l)

echo ********************************************
echo Es stehen $impanz Dateien fuer den Import
echo durch den Mecom-Recorder bereit
echo ********************************************

secs=$((1 * 30))
while [ $secs -gt 0 ]; do
   echo -ne "$secs\033[0K\r"
   sleep 1
   : $((secs--))
done
done

Die obigen Variablem müssen natürlich an die eigenen Gegebenheiten angepasst werden.