Geht das: automatischer Download via SFTP Client auf Synology?

Status
Für weitere Antworten geschlossen.

cheffe00

Benutzer
Mitglied seit
07. Jul 2021
Beiträge
11
Punkte für Reaktionen
1
Punkte
3
Hallo zusammen,
ich stehe vor einer schwierigen Aufgabe und hoffe dass mir jemand helfen bzw. einen Lösungsansatz geben kann.
Ein Lieferant stellt mir eine Datei auf seinem SFTP Server zur Verfügung, die ich täglich manuell mit Filezilla abhole, auf meinem lokalen PC speichere und dann auf meinen FTP Server hochlade.
Um den Prozess zu automatisieren hatte ich ein Script auf meinem Server erstellt, dass die Datei direkt vom entfernten SFTP Server abholen sollte. Leider hat der Lieferant seine Firewall so konfiguriert, dass scriptbezogene Abrufe geblockt und lediglich manuelle Clientaufrufe zugelassen werden.
Meine Idee ist nun, einen SFTP Client auf der Synology laufen zu lassen, der einmal täglich vollautomatisiert die Datei via SFTP abholt. Im zweiten Task soll die Datei dann auf meinen Server hochgeladen werden.
Gibts dafür eine Lösung?
Mein System: Synology RS820+ mit DSM 7.0.1-42218
Danke!
 

ottosykora

Benutzer
Mitglied seit
17. Apr 2013
Beiträge
8.879
Punkte für Reaktionen
1.154
Punkte
288
FTP/FTPS würde auch die Filestation machen können, einen 'Filezilla' für Syno ist mir so nicht bekannt, ev könnte es was in dem Paket FileUtils geben.
 

himitsu

Benutzer
Sehr erfahren
Mitglied seit
22. Okt 2018
Beiträge
2.904
Punkte für Reaktionen
337
Punkte
123
Firewall gegen Scriptzugriffe?

lftp/sftp gibt es in der Console und grundsätzlich geht es.


Ich hab nur grade das Problem, dass lftp und Co. mit einigen "etwas" älteren FTP-Servern Probleme hat und keinen Zugriff bekommt (heißt immer Logindaten wären falsch, aber eigentlich es mit irgendeiner Antwort ein Problem, weil er die nicht versteht)
 

cheffe00

Benutzer
Mitglied seit
07. Jul 2021
Beiträge
11
Punkte für Reaktionen
1
Punkte
3
FTP/FTPS würde auch die Filestation machen können, einen 'Filezilla' für Syno ist mir so nicht bekannt, ev könnte es was in dem Paket FileUtils geben.

Das Protokoll muss SFTP sein und Filezilla macht keine automatischen tasks. Das sollte demnach keine Lösung sein.
 

cheffe00

Benutzer
Mitglied seit
07. Jul 2021
Beiträge
11
Punkte für Reaktionen
1
Punkte
3
Firewall gegen Scriptzugriffe?

lftp/sftp gibt es in der Console und grundsätzlich geht es.


Ich hab nur grade das Problem, dass lftp und Co. mit einigen "etwas" älteren FTP-Servern Probleme hat und keinen Zugriff bekommt (heißt immer Logindaten wären falsch, aber eigentlich es mit irgendeiner Antwort ein Problem, weil er die nicht versteht)

Was heisst das nun?
 

ottosykora

Benutzer
Mitglied seit
17. Apr 2013
Beiträge
8.879
Punkte für Reaktionen
1.154
Punkte
288
Filezilla macht keine automatischen tasks. Das sollte demnach keine Lösung sein.

ich meine eben keine Filezilla, das gibt es für DS nach meinem Wissen sowieso nicht

SFTP geht normal von der Kommandozeile, aber dann sind wir wieder am Anfang beim Script was ja nicht geht

Ich weiss jetzt nicht was alles FileUtils beinhaltet, aber das ist ein Paket mit zahlreichen kleinen Programmen, schau das ev an, vielleicht gibt es dort eine Art Client was man einschalten kann per cron oder so was
 

himitsu

Benutzer
Sehr erfahren
Mitglied seit
22. Okt 2018
Beiträge
2.904
Punkte für Reaktionen
337
Punkte
123
Und wieso soll das Script nicht gehn?

ob FileZilla (könnte man auch im VMM oder Docker installieren) oder lftp (das kann auch SFTP/FTPS) oder sftp,
was soll den FTP-Server da das Script interessieren? für FTP-Server ist alles ein FTP-Client (und notfalls kann man die Client-Kennung auch ändern), egal ob es manuell oder via Script ausgeführt wird. Wie es ausgeführt wird, das weiß der Server garnicht und da alles über die selben Ports geht, erkennt der Server keinen Unterschied.
 

himitsu

Benutzer
Sehr erfahren
Mitglied seit
22. Okt 2018
Beiträge
2.904
Punkte für Reaktionen
337
Punkte
123
Beispiel
Bash:
/usr/bin/lftp -c "
set net:timeout 10
set net:max-retries 2
set ftp:list-options -a
set ftp:ssl-force true
open \"ftp://$USER:$PASS@$SERV:21\"
lcd \"$DEST\"
cd /
mirror --no-perms --exclude=#snapshot --delete --parallel=3 --loop --verbose
bye
"

hier ist es als *.sh in home, welches vom Aufgabenplaner aufgerufen wird (ginge auch direkt im Aufgaben-Script, aber die Zugangsdaten sind so in home vor den anderen Usern/Admins versteckt, da nur dieser User die Zugriffsrechte auf die .sh hat)
Bash:
#!/bin/bash -vx
LANG='C.UTF-8'
SERV='ftp.*****.de'
USER='*****'
PASS='*****'
DEST='/volume1/FTP-Kopie'

echo "$(date '+%d.%m.%Y %H:%M:%S')" > "$DEST/! log.txt"
timeout --signal=SIGINT 7200 /usr/bin/lftp -c "
set net:timeout 10
set net:max-retries 2
set ftp:list-options -a
set ftp:ssl-force true
set ssl:verify-certificate no
open \"ftp://$USER:$PASS@$SERV:21\"
lcd \"$DEST\"
cd /
mirror --no-perms --exclude=#snapshot --exclude=\"! log.txt\" --delete --parallel=3 --loop --verbose
bye
" | while IFS= read -r line
do
  echo "$line"
  echo "$line" >> "$DEST/! log.txt"
done
echo "$(date '+%d.%m.%Y %H:%M:%S')" >> "$DEST/! log.txt"
while + doppeltes echo, da wir das Log nochmal außerhalb des Aufgabenplaners haben wollten.
mit timeout, falls es mal hängen bleibt ... wird zum nächsten Zeitpunkt wieder fortgesetzt.
ssl:verify-certificate=no, da das Zertifikat eigentlich nicht für die Domain ist :censored:
 

himitsu

Benutzer
Sehr erfahren
Mitglied seit
22. Okt 2018
Beiträge
2.904
Punkte für Reaktionen
337
Punkte
123
also wie das geht weiss ich natürlich nicht
Das ist der Punkt.

z.B. FileZilla oder lftp ... das sind Beides nur Programme / FTP-Clients.
Die Datenübertragung ist verschlüsselt (SFTP), somit kann die Firewall beim FTP-Server eigentlich doch garnicht wissen, wer da am anderen Ende ist
und selbst wenn die Firewall dennoch an die Infos im verschlüsselten Datenstrom ran kommt, dann kann die maximal die Kennung im FTP-Protokoll mitlesen, aber ob das eine GUI- oder Consolen-Anwendung ist, das bekommt man so dennoch nicht raus.
 
  • Like
Reaktionen: ottosykora
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat