Dateien umbenennen und per FTP auf Webserver laden

pks-team

Benutzer
Mitglied seit
15. Apr 2017
Beiträge
16
Punkte für Reaktionen
3
Punkte
3
Hallo,

eine Webcam speichert alle 5 Minuten ein Bild mit dem Name 192.168.1.246_01_20220512092326415_TIMING.jpg in ein Verzeichnis meiner DS920+

Ich benötige jeweils das aktuellste Bild auf meinem Webserver, aber immer mit dem gleichen Name (name.jpg)

Was ist der einfachste Web dies umzusetzen?

1. Es gibt eine neue Datei 192.168.1.246_01_yyymmttssmmssss_TIMING.jpg
2. Umbenennen in Bild.jpg
3. per FTP auf den Server laden (mit überschreiben der Datei die bereits dort ist)

Das Bild könnte auch von der Surveillance Station gemacht werden, um alles in einem Script zu haben.

Fällt jemandem eine einfachen weg ein für einen Nichtprogrammierer?

Grüße

Norbert
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
600
Punkte
174
Über ein shell Skript ließe sich das realisieren.

Hier zumindest mal ein Code Schnipsel damit man das zuletzt modifizierte File heraus bekommt und um es dann zunächst im originalen Verzeichnis umzubenennen.

Ich benötige jeweils das aktuellste Bild auf meinem Webserver
Sprichst du hier vom Webserver der sich auf dem NAS befindet? Also möchtest du die Datei eigentlich nur auf dem NAS von einem Verzeichnis in dem die Bilder von der Webcam abgelegt werden in das Verzeichnis des Webservers vom NAS kopieren?

Dann würde ich folgenden Code Schnipsel vorschlagen.

Entsprechend die Pfade Anpassen für...
<PFAD_DER_HOMEPAGE>
<ABSOLUTE_PATH>


Code:
targetfile=/var/services/web/<PFAD_DER_HOMEPAGE>/Bild.jpg
latestfile=`find <ABSOLUTE_PATH> -type f -name "192.168.1.246_01_*_TIMING.jpg" -printf '%T+ %p\n' | sort -r | head -n1 | awk '{ print $2 }'`

# entweder mit move um das Bild zu verschieben
mv $latestfile $targetfile

# oder mit copy um das originale Bild des Quellverzeichnis beizubehalten.
cp $latestfile $targetfile

# am schluss noch die Berechtigungen anpassen für den Webserver
chown http:http $targetfile
chmod 640 $targetfile
 
Zuletzt bearbeitet:

pks-team

Benutzer
Mitglied seit
15. Apr 2017
Beiträge
16
Punkte für Reaktionen
3
Punkte
3
Sprichst du hier vom Webserver der sich auf dem NAS befindet? Also möchtest du die Datei eigentlich nur auf dem NAS von einem Verzeichnis in dem die Bilder von der Webcam abgelegt werden in das Verzeichnis des Webservers vom NAS kopieren?
[/CODE]
Hallo,

danke für Dein Input. Nein. Es handelt sich um einen eigenen Webserver bei einem Provider. Die Umbenennungsaktion würde lokal stattfinden. Es müsste dann die Datei per FTP auf den Webserver kopiert werden.

Ich versuche mal mit Deinem Beispiel. Meine Unix Erfahrung geht auf 1988 zurück :cool: . Mal schauen was ich hinbekomme
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
600
Punkte
174

pks-team

Benutzer
Mitglied seit
15. Apr 2017
Beiträge
16
Punkte für Reaktionen
3
Punkte
3
Doch doch doch. Ganz viel. 34 Jahre sind vergangen :p
 
Zuletzt bearbeitet von einem Moderator:

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
600
Punkte
174
34 Jahre sind vergangen
Wenn ich drüber nachdenke könntest du sogar recht haben ;)
Aber die Syntax und die wesentlichen Kommandos haben sich doch seit den 70er nicht verändert...

Wie auch immer bekommt man mit dem von oben gezeigten Befehl schon zumindest einmal die zuletzt erstellte Datei heraus.
Diese kann man dann natürlich zunächst einmal in ein temporäres Verzeichnis kopieren und umbenennen.

Das würde für den ersten Schritt wie folgt aussehen:
Code:
targetfile=/volumeX/<TEMP_DIR>/Bild.jpg
latestfile=`find <ABSOLUTE_PATH> -type f -name "192.168.1.246_01_*_TIMING.jpg" -printf '%T+ %p\n' | sort -r | head -n1 | awk '{ print $2 }'`

# oder mit copy um das originale Bild des Quellverzeichnis beizubehalten.
cp $latestfile $targetfile

Und dann müsste man sich noch um die Übertragung der Datei aus dem temporären Verzeichnis per FTP an den Webserver kümmern.
Soweit ich mich erinnern kann hatte ich das Thema schon mal hier im Forum, finde es aber nicht mehr.

Man könnte das ganze mit "curl" versuchen...
curl -T $targetfile ftp://ftp.example.com --user <BENUTZER>:<PASSWORT>

Aber wo ich es gerade selbst probiert habe fällt mir da wieder ein dass ich dieses Problem schon mal hatte und folgende Fehlermeldung erscheint.
curl: (1) Protocol "ftp" not supported or disabled in libcurl

Da hat Synology wohl das ftp Protokoll aus der Bibliothek von curl entfernt bzw. nicht eingebunden.

Vielelicht gibt es jemand anderen der hier eine Idee bezüglich FTP Transfer per Command Line hat oder der entfernte Server unterstützt vielleicht rsync?
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
600
Punkte
174
Danke @Fusion! Ja du hast recht, lftp ist vorhanden. Bei mir auch ohne das Syno-Cli Paket.

Ich habe das gleich mal in meiner Umgebung im Zusammenspiel mit einem entfernten Testserver probiert. Klappt ganz gut...

lftp -c "open -u user,pass ftp-server-adddress; put -O /remote/path /local/path/file"
 


 

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