Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Dateien verschieben per CronJob - von NAS auf FTP - Möglich?!

  1. #1
    Registrierter Benutzer
    Registriert seit
    Jul 2012
    Beiträge
    5

    Dateien verschieben per CronJob - von NAS auf FTP - Möglich?!

    Hallo zusammen ...

    Ich habe folgendes Problem und eine Idee:

    Meine WebCam soll jede Sekunde ein Snapshot auf meinen FTP übertragen.
    Dies scheitert leider an der Übertragungsgeschwindigkeit und/oder der Bildgröße , so daß effektiv nur alle 3-7 Sekunden ein Bild gespeichert wird.
    Da diese Bilder jedoch für ein Timelpase verwendet werden sollen, ist diese Vorgabe zwingend erforderlich ...

    Weiters werden diese Snapshots dann per CronJob auf dem WebServer regelmäßig in eine entsprechendes Verzeichnis verschoben und dabei umbenannt.
    Soweit so gut; klappt alles ... Bis auf eben die Tatsache, daß ich zu große Lücken zwischen den Bildern habe!

    Der Cronjob sieht so aus:

    rm www/automower-webcam.com/SnapshotsDays/OnBoard/Dienstag/Fahrt_1/*

    x=1
    for fname in www/automower-webcam.com/UploadsOnBoard/*.jpg
    do
    mv $fname `printf www/automower-webcam.com/SnapshotsDays/OnBoard/Dienstag/Fahrt_1/Alarm"%05d.jpg" $x`
    x=$(($x+1))
    done
    Erst das Verzeichnis leeren, sprich die vorherigen Dateien löschen, dann verschieben und dabei durchnummerrieren und in ein ffmpeg-taugliches Format bringen ...!
    Das klappt auf dem WebServer perfekt ...

    Jetzt zu meiner Idee:
    Meine WebCam kann auch auf einem NAS speicher, anstatt auf FTP.
    Hab's probiert und dort kommen die Bilder jede Sekunde an!

    Jetzt würde ich den o.g. CronJob irgendwie umwandeln , so dass der Ausgabeort das FTP-Verzeichnis ist!

    Geht das?!?

    So ähnlich:

    rm ftp://xxx@xxx.com/www/automower-webc...stag/Fahrt_1/*

    x=1
    for fname in /automower_NAS/UploadsOnBoard/*.jpg
    do
    mv $fname `printf ftp://xxx@xxx.com/www/automower-webcam.com/UploadsOnBoard/Dienstag/Fahrt_1/Alarm"%05d.jpg" $x`
    x=$(($x+1))
    done
    Dabei sei erwähnt dass der FTP natürlich Benutzer + Kenwort braucht, dass da oben noch irgendwie eingebaut gehört, sofern das überhaupt so ginge?!?

    Kann mir dabei jemand helfen?!

    DANKE!

    Nils

  2. #2
    Alter Sack Avatar von reno
    Registriert seit
    May 1999
    Ort
    Hohenpeißenberg
    Beiträge
    640
    Hi,
    den FTP kannst du automatisieren, indem du die Befehle dafür in eine Datei schreibst, deren Inhalt dem FTP beim Starten übergeben wird. Du kannst diese (Hilfs)datei auch gleich durch ein Skript erzeugen. Z.B.:
    Code:
    #!/bin/bash
    
    INFILE="ftp.in"
    
    echo open SERVERNAME >${INFILE}
    echo user USERNAME PASSWORD >>${INFILE}
    echo prompt >>${INFILE}
    echo mput *.jpg >>${INFILE}
    echo quit >>${INFILE}
    
    ftp -n <${INFILE}
    So ungefähr.
    Hack on

  3. #3
    Registrierter Benutzer
    Registriert seit
    Jul 2012
    Beiträge
    5
    Morning ...

    Oha, das check ich nicht

    Und: ich will ja nicht den FTP automatisieren, sondern einen CronJob auf der NAS (Synology DS212+) starten, der dann von der NAS zum FTP verschiebt ...

    Nils

  4. #4
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.819
    Naja, was vorgeschlagen wurde, automatisiere den FTP-Client. So ein Client ist bei jeder Distribution dabei, Beispiel
    Code:
    ftp
    ftp> open 192.168.10.111
    Connected to 192.168.10.111.
    220  RT-IP FTP Server ready. Type HELP for help
    Name (192.168.10.111:root): admin
    331 User name okay, need password.
    Password:
    230 User logged in, proceed.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> put /var/www/index.html /index2.html
    local: /var/www/index.html remote: /index2.html
    200 Command okay.
    150 File status okay; about to open data connection.
    226 Closing data connection. Transfer succeeded
    177 bytes sent in 0.00 secs (987.7 kB/s)
    ftp> close
    221 Service closing control connection. Bye...
    ftp> bye
    Nun kannst du diesen Client sagen, was er machen soll, also legt man eine Kommandodatei an:
    Code:
    echo open 192.168.10.111 > cmds.ftp
    echo user admin *** >> cmds.ftp
    echo put /var/www/index.html /index.2html  >> cmds.ftp
    echo close >> cmds.ftp
    echo bye >> cmds.ftp
    Nun kannst du den Client so starten:
    Code:
    ftp -nv < cmds.ftp
    Connected to 192.168.10.111.
    220  RT-IP FTP Server ready. Type HELP for help
    331 User name okay, need password.
    230 User logged in, proceed.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    local: /var/www/index.html remote: /index.2html
    200 Command okay.
    150 File status okay; about to open data connection.
    226 Closing data connection. Transfer succeeded
    177 bytes sent in 0.00 secs (949.7 kB/s)
    221 Service closing control connection. Bye...
    Was also gemeint ist, erzeuge eine entsprechende Kommandodatei, ein entsprechendes for hast du ja bereits, alternativ, halt mit mput arbeiten. Siehe man 1 ftp.
    Geändert von nopes (22.07.13 um 13:20 Uhr)
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  5. #5
    Registrierter Benutzer
    Registriert seit
    Jul 2012
    Beiträge
    5
    Hallo zusammen ...

    Sorry, aber das ist mir zu hoch ;(

    Die Batch Datei, die ich oben angegeben hab, hab ich mir mühselig über irgendwelche Foren zusammengebastelt

    Also kann ich meine Batchadatei NICHT einfach Idee NAS als Cronjob ausführen lassen und den FTP so ansprechen, wie oben beschrieben?!?

    Kann man das nicht einfacher machen?!?
    Bzw. mir mal jemand meine o.g. Batch Datei umbasteln, so dass ich diese in der NAS starten kann?!?

    Danke!!!

    Nils

  6. #6
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.819
    Simpler, nein, nicht per ftp, das ist halt so und ist auch simpel, ggf. mal über scp nachdenken.

    hmm, warte mal kurz, bleiben wir beim FTP-Server, ist das der selbe Rechner?
    Wenn ja, evt. kannst du ja einfach die Dateien, in einen der "FTP-Ordner" kopieren, oder linken (also ggf. den mv Befehl in deinem Script durch cp oder ln ersetzen).

    Wenn nein, dann willst du einen bzw. mehrere Uploads durchführen, für jeden Screenshot einen. Wenn du das zu Fuss machst, musste du dafür ein FTP-Client bzw. Programm verwenden und genau diese Strecke wurde die empfohlen und erläutert.

    Dein Script, läuft übrigens etwa so:
    1. ermittel alle Dateien die auf Maske passen
    2. für jede Datei
    3. verschiebe Datei(Quelle, Ziel)

    Alles was du machen musst ist, 3. durch:
    3. ftpUpload(Quelle, Ziel)
    [4. (optional) lösche lokale Datei]
    Aus den Posts könntest du dir zB ein Shell Script basteln, welches zwei Parameter (1. Quelle, 2. Ziel) besitzt und genau das macht, einen FTP-Upload (und ggf. die Quelle löschen), mv dadurch ersetzt (natürlich muss das Ziel entsprechend angepaßt werden; aber das hast du ja schon erkannt)...
    - natürlich gibt es elegantere Lösungen, aber diese tut es erstmal und ist wirklich simpel und fällt für mich in die Schublade sollte man können, muss man aber nicht, aber eigentlich schon [auch die eleganteren ]

    Und noch so ein Tipp, Skripte bzw. Shell-Skripte sind doch nichts weiter als eine Aneinanderreihung von Shell-Befehlen, Frage dich, was musst du in einer Shell eingeben, um dein Ziel zu erreichen. Mein nächster Vorschlag, spiele es für eine Datei durch und verstehe die Befehlskette und die ersten Posts dazu, ansonsten bringt es dir nicht wirklich was; schließlich sollst du auch was lernen - und das meine ich ernst bzw. sollte dein Anspruch sein
    Geändert von nopes (22.07.13 um 22:47 Uhr)
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  7. #7
    Registrierter Benutzer
    Registriert seit
    Jul 2012
    Beiträge
    5
    Hi ...

    Na klar, will ich auch etwas lernen dabei

    Also nochmal ...

    Der CronJob/das Script von mir, macht ja eigentlich genau das richtige!
    Aber eben alles auf meinem WebServer bei meinem Provider ...

    Jetzt möchte ich aber meine NAS einbinden und von DORT auf den WebServer (FTP) schieben ...

    Also keinerlei PC dazwischen ...

    Wie ich meinen FTP per Benutzer + Passwort erreiche habe ich im Browser gecheckt, das geht zumindest mal ...

    Jetzt ist eigentlich "nur" die Frage, ob ich aus einem einfachen?!? CronJob' den ich auf der NAS starte, direkt den FTP adressieren kann?!?

    Gruß,
    Nils

  8. #8
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.819
    Logisch, probiere mal eine Datei von der Konsole/Shell via FTP zu übertragen, egal welche und wohin, wichtig ist die Shell.
    Siehe auch früher und Siehe man 1 ftp.

    Irgendwann solltest du erkennen, dass du entweder ganz viele echos im for brauchst oder eben einen "eigenen" Befehl für den Upload einer Datei (bzw. Shell-Skript), da will ich hin. Im Idealfall erkennst du, dass du eigentlich kein for brauchst, aber das ist gerade nicht wichtig. Wobei so ein eigener Befehl natürlich auch neu Optionen bietet, man könnte zB prüfen, ob die schon auf dem Server liegt und sie ggf. überspringen.
    Geändert von nopes (22.07.13 um 23:27 Uhr)
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  9. #9
    Registrierter Benutzer
    Registriert seit
    Jul 2012
    Beiträge
    5
    Hmm ...

    Also:

    ftp-script ist nicht gleich "linux"-script/Befehle, richtig?!

    Checke es dennoch nicht so ganz ...

    Ich möchte:

    a) von der NAS aus auf dem FTP ein komplettes Verzeichnis leeren; nicht löschen, das Verzeichnis selbst soll bleiben

    b) dann von der NAS auf den FTP Dateien verschieben und dabei umbenennen


    Könnten mir nicht mal die Profis hier ein kurzes Script "basteln", dass ich dann anpassen kann ...

    Ggf. ein paar simple Erläuterungen dazu?!

    DANKE!!!

    Nils

  10. #10
    Alter Sack Avatar von reno
    Registriert seit
    May 1999
    Ort
    Hohenpeißenberg
    Beiträge
    640
    Was meinst du mit "ftp-script"? Das File-Transfer-Protocol hat einen eigenen Befehlssatz. "Linux-Script"-Befehle ist so auch nicht ganz richtig. Es gibt verschiedene Shells, die sich bei den Befehlen und in der Syntax unterscheiden. Warscheinlich benutzt du die Bash-Shell. Das Skript, welches ich gepostet habe ist ein Bash-Skript, welches FTP-Befehle generiert, diese in eine Hilfsdatei schreibt, eine Verbindung zu einem FTP-Server herstellt und die Befehle aus der Hilfsdatei an den FTP-Server sendet. Also ein automatisiertes FTP. Du könntest ebenso eine manuelle FTP-Verbindung herstellen und die Befehle, so wie sie in der Datei stehen an den Server senden.
    Nochmal ein Beispiel:
    Code:
    #!/bin/bash
    
    # Name der Hilfsdatei, kannst du nennen, wie du willst (möglichst nicht "test")
    INFILE="ftp.in"
    
    # SERVERNAME: der Name deines FTP-Servers
    # USERNAME: dein FTP-Benutzername
    # PASSWORD. dein FTP-Password
    echo "open SERVERNAME" >${INFILE}
    echo "user USERNAME PASSWORD" >>${INFILE}
    echo "prompt" >>${INFILE}
    echo "mdelete *.jpg" >>${INFILE}
    
    # Eine Variable vom Typ Integer definieren und ihr den Wert 0 zuweisen
    typeset -i COUNTER=0
        for fname in www/automower-webcam.com/UploadsOnBoard/*.jpg
        do
            echo "put ${fname}" >>${INFILE}
            let COUNTER++
            echo "rename ${fname} webcam${COUNTER}.jpg" >>${INFILE}
        done
    echo "quit" >>${INFILE}
    
    ftp -n <${INFILE}
    Das wäre erstmal eine Grundlage, die du dir anpassen und erweitern kannst. Den letzten Befehl (ftp -n <${INFILE}) kannst du ja zum Testen erstmal auskommentieren, nur um zu sehen, was das Skript in die Hilfsdatei schreibt.
    Hack on

Ähnliche Themen

  1. Dateien in bestimmten Abschnitten verschieben
    Von Communicate im Forum Linux Allgemein
    Antworten: 3
    Letzter Beitrag: 25.08.12, 20:59
  2. Framebufferslideshow per SSH / FTP
    Von FdF im Forum Linux Allgemein
    Antworten: 6
    Letzter Beitrag: 13.11.09, 18:09
  3. shellscript per ftp datei nach extern kopieren
    Von foruni.de im Forum Anwendungen Allgemein, Software
    Antworten: 0
    Letzter Beitrag: 08.07.04, 13:41
  4. Cronjob: Datei von FTP zu FTP kopieren
    Von Meilenstein im Forum Linux als Server
    Antworten: 5
    Letzter Beitrag: 01.06.04, 15:24
  5. Dateien mit sekundärer Gruppe anlegen (ftp)
    Von sschaper im Forum Linux Allgemein
    Antworten: 4
    Letzter Beitrag: 05.04.01, 23:58

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •