"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

REQ: Letztes Bild aus FTP Verzeichnis abrufen

Marius 27.05.2013 - 13:28 4550 17
Posts

Marius

OC Addicted
Avatar
Registered: May 2002
Location: Austria
Posts: 3375
Hi,...

ich habe einen FTP Server, auf dem alle 30 Minuten ein Bild gespeichert wird.

Jetzt bin ich auf der suche nach einem Script, das mir ca. alle 30min das letzte Bild anzeigt, damit ich das so auf einer Website ausgeben kann.

Das auslesen würde dann mit FTP User/PW geschehen...

Hat jemand lösungsvorschläge? :)

Die Bilder mit Dateinamen sehen so aus...
click to enlarge

tia,
marius

SailorChibi

Addicted
Avatar
Registered: Aug 2010
Location: Wien
Posts: 380
ich vermute fast, dass es mit ruby am schnellsten geht
da müsst ich mich aber mal einlesen wie das mit ftp hinhaut ...
ich schau mal was sich machen lässt

edit: ok dass ist noch ein bisschen ausserhalb meines könnens
und ich hab leider gerade zu wenig zeit, mich da so einzulesen
vielleicht ist ja ein ruby geek im forum der das schnell zusammencoden kann für dich
Bearbeitet von SailorChibi am 27.05.2013, 13:45

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Warum Ruby?
Die meisten Webserver laufen mit PHP, ich schlage mal vor man öffnet in einem kleinen PHP-Script den FTP-Ordner, iteriert durch die Dateien, holt sich mit ftp_mdtm die neuste Datei und bettet den Link in das entsprechende img-Tag ein.

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
Fehlts am Können (programmiertechnisch) oder an der Idee?

Ich selbst kann leider nur Java und spontan fällt mir dies hier ein:
- Dateinamen + Änderungsdatum in einer Liste (bzw Hashmap, gibt da mehre Möglichkeiten) sammeln
- Liste nach Änderungsdatum sortieren
- erstes bzw. letztes Element nehmen.

Mit Script kann ich an dieser Stelle leider nicht dienen und ich könnte mir auch vorstellen, dass es einfacher (vor allem resourcenschonender) geht.

edit: Oder wie Obermotz vorschlägt, direkt das letzte Element aus dem Ordner picken, falls es in der Programmiersprache geht.

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Nein, auch mit meinem Befehl holt man ich nur das Datum und muss vorher sortieren.
Ich hab gerade noch ein cooles Script gefunden, das alle Dateiattribute ausliest, auch das Datum.
Das wäre für einen PHP-Neuling sicher mal ein guter Start:
http://www.php.net/manual/en/functi...list.php#108501

Aber letztendlich wichtig für diesen Thread hier wäre mal die Sprache mit der er arbeiten will/kann.

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11919
Code:
echo "ls --sort=date" | lftp ftp.mozilla.org | tail -n1


Code:
jt@d257:~ $ echo "ls --sort=date" | lftp ftp.mozilla.org
-rw-r--r--    1 ftp      ftp           528 Nov 01  2007 .message
-rw-r--r--    1 ftp      ftp           528 Nov 01  2007 README
drwxr-xr-x    3 ftp      ftp          4096 Oct 03  2012 .
drwxr-xr-x    3 ftp      ftp          4096 Oct 03  2012 ..
-rw-r--r--    1 ftp      ftp           561 Oct 03  2012 index.html
drwxr-xr-x   46 ftp      ftp          4096 Apr 12 21:47 pub
jt@d257:~ $ echo "ls --sort=date" | lftp ftp.mozilla.org | tail -n1
drwxr-xr-x   46 ftp      ftp          4096 Apr 12 21:47 pub


Ist halt prinzipbedingt unreliable, weil FTP radioaktiver Sondermuell ist, und es kein standardisiertes Format fuer Listings und/oder [acm]time-Angaben gibt.

Marius

OC Addicted
Avatar
Registered: May 2002
Location: Austria
Posts: 3375
so,...

also bei mir fehlts diesbezüglich eigtl. an der gesamten umsetzung :)

Die Websites auf denen das bild angezeigt werden soll laufen alle auf Webservern mit php,mysql usw...

Das bild soll irgendwo auf der website eingebettet werden, sozusagen als "webcam bild" jedoch wird das bild ca. nur alle 30min aktualisiert.

Der speicherort der bilder die angezeigt werden sollen ist auf einem FTP Server.


Wenn ich das bild der kamera direkt anzeigen würde, hätte ich das problem das die bandbreite hierfür nicht ausreicht... (cam hängt an einem 3G stick) - desshalb hab ich mir gedacht wärs besser die bilder vom ftp-speicherort anzuzeigen...

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Hast du auf dem FTP-Server root Zugriff? Wenn ja -> Cronjob, der dir alle 30min die aktuellste Datei in einen Ordner und einen bestimmten Dateinamen kopiert. Dann brauchst du von den ganzen Servern nur mehr auf die eine URL verlinken.
Falls kein root-Zugriff, bleibt dir eh nur die Methode die ich oben gepostet hab..

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11919
Fuer cron braucht man keinen root-Account; crontabs duerfen auch normale User (meist ueber die Gruppenzugehoerig zu einer Gruppe namens "cron") fuehren.

Shell-Oneliner, der sich dafuer eignet:

Code:
find /your/path/here -maxdepth 1 -type f -printf '%C@ %f\n' | sort -n | tail -n1 | cut -d" " -f2-

Marius

OC Addicted
Avatar
Registered: May 2002
Location: Austria
Posts: 3375
puh, ich seh schon das ich mich mehr mit der materie beschäftigen muss... @colossus: allein bei dem oneliner setzt bei mir schon aus :D

@obermotz: der "ftp-server" ist einfach ein win7pro mit filezilla server drauf der in der firma steht...

mr.nice.

endlich fertig
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6313
Wie wäre es ein weiteres Verzeichnis anzulegen, in dem immer nur das aktuellste Bild liegt und auch der Dateiname gleich bleibt und du statisch dorthin verlinkst? Die vollständige Bilderserie kann man ja zu Dokumentationszwecken weiterführen.

Auch damit nicht jemand auf die Idee kommt sich alle Bilder anzuschauen, die jemals gemacht worden sind.

Longbow

Here to stay
Avatar
Registered: Feb 2003
Location: Homeoffice
Posts: 5151
brauchst du den timestamp/die versionen? ansonsten lass einfach das file ueberschreiben und normal auf der hp anzeigen

Marius

OC Addicted
Avatar
Registered: May 2002
Location: Austria
Posts: 3375
ja ich brauch dann alle bildet fuer ein timelapse video.

das mit extra verzeichnis mit gleichbleibendem dateinamen hoert sich imho gut an... also muss ich per "batch oder so?" immer die aktuellste date in ein eigenes verzeochnis legen und überschreiben....

entweder ich lass dann gleich einen "webserver" auf dem rechner laufen? oder eben per ftp von den seiten die das bild anzeigen sollen,...
oder denk ich wieder zu kompliziert?

tia :)

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Falls der Rechner auf eine öffentliche IP genattet oder geroutet werden kann, würd ich folgendes empfehlen:
Installation des IIS, erstellen einer einfachen Site und ein batch oder PS Skript, der via Scheduler halbstündlich gestartet wird. Das Script kopiert wie gesagt die Datei immer mit dem gleichen Namen in das Verzeichnis der IIS Site und die anderen Server greifen auf die URL zu. Wäre wahrscheinlich die einfachste Lösung..

Marius

OC Addicted
Avatar
Registered: May 2002
Location: Austria
Posts: 3375
@obermotz: das hört sich ganz gut an,.. werd mir das bei zeit mal ansehen...

wenn ich diese zeilen jede halbe stunde ablaufen lasse sollte es doch funktionieren nehm ich an!?! :)

Code:
@echo off &setlocal

pushd "C:\test1" ||goto :eof
for /f "delims=" %%a in ('dir /a-d /b /od *.jpg') do set "newestFile=%%a"
copy "%newestFile%" "C:\test2\aktuell.jpg

popd

exit
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz