1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

FTP-Eingänge abfragen/melden lassen

Dieses Thema im Forum "AppleScript" wurde erstellt von CloneOfMyself, 05.10.08.

  1. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    24.02.07
    Beiträge:
    253
    Hallöle
    Ich bräucht mal einen Tipp von euch: Wenn ich meinen Mac mit den Bordmitteln als FTP-Server einsetze, wie kann ich dann Dateieingänge per Script abfragen bzw. vom FTP-Server an ein Script melden lassen?
    Ordner-Überwachung per Folder-Action kommt nicht in Frage, da nach wie vor zu unzuverlässig.
    Gibt's ein Logfile, in dem die empfangenen Daten (nach vollständiger Übertragung) protokolliert werden, so dass ich dieses regelmässig auf Veränderungen checken könnte, und wenn ja, wie macht man dies am geschicktesten? Gern auch mit shell-Kommandos.

    Gruß, H =:oops:) L G I
     
  2. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Nimm den PureFTPD für den Mac. Du kannst dem FTP Server dann sagen, er soll nach einem Upload ein Script ausführen. Dies übernimmt dann pure-uploadscript. Im Script bekommst du dann den Dateinamen und Pfad als einen String übergeben.
     
  3. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    24.02.07
    Beiträge:
    253
    Das klingt sehr gut. Den wollt ich mir sowieso mal anschauen. Danke für den Tipp.
     
  4. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    24.02.07
    Beiträge:
    253
    Hmm. Der zickt bei mir nur herum. Noch andere Lösungsvorschläge? Am besten für die OS X-Standard-FTP-Lösung?
     
  5. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    Du kannst ja das ftp.log analysieren und bei einem angeschlossenen, neuen Upload der noch nicht in Liste X ist eine Meldung generieren
     
  6. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    24.02.07
    Beiträge:
    253
    Jo. Danke. Habe das /var/log/ftp.log auch bereits entdeckt.
    Hmm. Leider ist das ftp.log vom ftpd (Standard-OS-FTP aus dem Sharing) bei einem Dateieingang ja nicht besonders ergiebig:
    Code:
    Oct  5 20:06:25 RecherA ftpd[1148]: Data traffic: 195001 bytes in 1 file
    Oct  5 20:06:25 RecherA ftpd[1148]: Total traffic: 196438 bytes in 2 transfers
    
    Da sieht's beim pure-ftpd doch schon deutlich besser aus:
    Code:
    Oct  5 19:39:01 RechnerA pure-ftpd: (username@89.XXX.XXX.XXX) [NOTICE] //Users/username/Shared/DieBloedeTestdatei.pdf uploaded  (195001 bytes, 21.24KB/sec)
    
    Beim pure-FTP habe ich allerdings Probleme beim Hochladen. Das Login auf einen angelegten FTP-User funktioniert, doch wenn ich hochladen will, werde ich immer wieder nach username & password gefragt, aber es wird absolut nicht hochgeladen. Hmm. Nur wenn ich mich mit Usernamen des Rechners und entspr. Passwort einlogge, gelingt ein Upload. Muss nochmal schauen. Aber nach einer einfachen Lösung sieht's mal wieder nicht aus. :(
     
  7. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    Mal 2 andere Lösungsansätze:
    Du könntest auch den Lösung dieses Threads nehmen und einfach die beiden Dateien (dateibaum von vor 24 und Dateibaum von jetzt) mit diff vergleichen. Dann hast Du auch Deinen Neuzugänge.... sofern in die Verzeichnisse nur via ftp hochgeladen wird.

    Ansonsten habe ich das damals bei meinem Hotline-Server mit find -ctime gemacht, da die hochgeladenen Dateien als Erstellungsdatum immer das Datum des Upload-Zeitpunktes verpasst bekommen haben. Am Ende dann noch ein -exec dran und du könnest z.B. in einen Ordner Links zu allen Uploads der letzten x Stunden anlegen lassen. Quasi ein Ordner mit Links zu den Neuzugängen.
    Ob der der ftp-server aber auch die ctime auf das Datum des Uploads setzt kann ich Dir leider nicht sagen...
     
  8. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    24.02.07
    Beiträge:
    253
    Hallo Hubi.
    Danke für deine Anregungen, aber so richtig ist's nicht das, was ich suche.
    Das Problem: die Datei-Eingänge sollen so schnell als möglich weiter verwurstet werden, aber natürlich nicht, bevor sie vollständig angekommen sind. Dafür wäre ein entspr. Log des FTP natürlich ideal. Nur ist der Standard-ftpd des OS nicht so geschwätzig. Vielleicht kann man das auch ändern?? Habe hier auch etwas zu dem Thema gefunden, aber leider scheint das unter Tiger 10.4.11 so nicht zu klappen. Ich finde die entspr. Dateien hierzu nicht. Weiß da noch jemand etwas?
    Für pure-ftpd gibt's da eine entsprechende upload-script-funktion, aber ich blicke im Moment noch nicht, wie das funktioniert. Und da die Lösung nicht für mich bestimmt ist, wäre es auch zu aufwändig, pure entspr. zu installieren/konfigurieren. Wenn man den ftpd von OS X zum Sprechen brächte, wär's schon schöner.
    Gruß, H =:oops:) L G I
     
  9. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Also der Pure ist nicht so schwer. Hast du dir mal den Manager heruntergeladen? Die Funktionsweise ist ganz einfach. Wenn der Pure-ftpd mit der Option für ein uploadschript (müsste -o sein) gestartet wird, schreibt es den Dateinamen mit Pfad in eine Pipe unter /var/run/. Diese Pipe wird von Pure-uploadscript überwacht. Sobald was da rein kommt, wird die Info über den Pfad/Namen an das Script weiter gegeben.
    Was klappt genau bei dem Pureftp nicht? Was für Benutzer hast du denn?
     
  10. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    Hm, also nachdem ich mir Pure-FTP so angesehen habe, würde der sehr elegant genau das tuen, was Du möchtest... wenn der Mensch, der es einsetzt das einmal und dann nie wieder anfassen muss (ftp-server) würde ich mir die Mühe machen, den zu konfigurieren.

    Mir ist noch eine putzige Idee (ein weiterer WorkArround) gekommen, wenn man zusammen mit der Datei ein md5-Prüfsumme hochlädt
    test.jpg
    und
    test.jpg.md5
    dann könnte ein script testen, ob die Prüfsumme aus der md5 Datei mit der Prüfsumme eigentlichen Datei übereinstimmt, und wenn dies der Fall ist, ist der Upload wohl fertig.
     
  11. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    24.02.07
    Beiträge:
    253
    Hallo drlecter. Vielen Dank für den Tipp.
    Habe ich. Läuft auch. Der pure ist da schon okay. Nur will ich ein Script für "Unbeleckte" schreiben. Da wäre eine Installation+Konfiguration des Pure eine Zumutung, auch wenn's mit dem Manager hinzubekommen wäre.
    Nun bin ich kein wirklicher shell-kenner. Für dich mag das einfach klingen, für mich weniger, und für den/diejenigen, die es haben wollen, schier unbegreiflich. Im Manager gibt's für die -o Option keine Funktionen. Wie starte ich ihn denn mit der Option, und wie genau läuft das mit so einer Pipe? Wie müsste das Script aussehen/heissen und wie wird es aufgerufen? Oder besteht es bereits und muss nur angepasst werden?
    Das hat mittlerweile funktioniert. Hatte einen Virtuellen User angelegt. Und nach langem Hin-und-Her klappte es dann auch.
    Wie gesagt, wäre eine Lösung über ftpd am schönsten, vielleicht aber mache ich auch eine regelmässige Abfrage über das Dateisystem mit Überprüfung der neuen Dateien auf Wachstum, um zu verhinden, dass diese angefasst werden, bevor der Upload abgeschlossen ist.
     
  12. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    So mal schauen. Aeh wenn ich das richtig sehe, ist bei MacOS der pureftp dabei. Der Manager dient halt nur für die Config.
    Den Manager hab ich mir jetzt mal installiert.
     
  13. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    24.02.07
    Beiträge:
    253
    Hi, Hubi. An die md5-Prüfsumme hatte ich auch schon gedacht. Ich könnte die Wachstums-Prüfung auf Datei-Ebene nutzen: die Prüfsumme cyclisch abklopfen, und wenn sie z.B. 3mal die gleiche ist, dann ist die Datei (mit sehr grosser Wahrscheinlichkeit) fertig übertragen.
    Danke für den Anstoss. War davon schon wieder abgedriftet.
     
  14. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    So bin weiter. Du kannst im Manager die Option einstellen. Ich schau gerade nach, wie man das Script starten kann welches ausgeführt werden soll.
    Normalerweise reicht es wenn man "/usr//local/sbin/pure-uploadscript -r scriptname" startet. Was dann im Script steht, ist egal. Ich nehme in der Regel dafür immer Perl (ich hab das Konstrukt im Einsatz).
    Man muss halt nur noch schauen, wo man einstellen kann, dass das automatisch beim reboot gestartet wird. Man kann das auch von Hand mit dem Parameter -B starten, dann verschwindet das als Daemon.
     
  15. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    24.02.07
    Beiträge:
    253
    Einschalten über "Extra arguments" mit "-o" ?

    Wo starte ich das? Könnte ich mit dem Script auch per osascript ein AppleScript zünden, an den der Pfad als Parameter übergeben wird? mit z.B. osascript -e 'run script file "HD1:blabal.scpt" with parameters {___}'
    Statt ___ müsste dann der Dateipfad übergeben werden. Wie?
     
  16. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Also:
    1. Manager starten
    2. Dann auf "Control Server Settings..." klicken. Da geht dann das Preferences Fenster auf
    3. Hier in der Zeile Server "Options" auswählen
    4. unten unter "Extra arguments" -o eintragen
    5. Ftp Server neu starten

    Ob alles richtig ist, kannst du im Terminal überprüfen.
    sudo ps -ax | grep pure
    Dann steht da pure-ftp.... und da muss ein -o mit drin stehen.
    Wenn du dann ein
    ls -l /var/run
    gemacht hast, ist da eine pure...pipe Datei

    Danach kannst du das Programm pure-uploadscript starten. Dies kannst du das erste mal im Terminal machen.
    "/usr//local/sbin/pure-uploadscript -r scriptname".
    Der Dateiname wird automatisch an das Script übergeben. Ich hatte bei mir ein Perlscript laufen und da dann den String übernommen. Wie das bei einem Applescript ist, weiss ich nicht. Kann man ein Applescript nicht direkt ohne osa aufrufen?
     
  17. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    24.02.07
    Beiträge:
    253
    Hallo drlecter
    Vielen Dank zunächst für deine Schritt-für-Schritt-Anleitung. Soweit habe ich auch alles.
    Ein Applescript direkt aufrufen wird wohl nicht gehen (also per -r meine ich). Das Problem ist die Parameterübergabe. Deshalb dachte ich, ein .sh anzulegen, dass dann per osascript ein AS zündet und die Parameter in beschriebener Weise übergibt. Wie würde denn eine normale Parameter-Übername (Annahme) in einem sh aussehen? Die Weitergabe vom .sh an das AppleScript sollte wie beschrieben funktionieren.
    Gruß, H =:oops:) L G I
     
  18. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Der Parameter wird halt direkt an das Script übergeben was aufgerufen wird. Du kannst in einem Shell Script die Übergabe mit $1 (für den ersten Parameter, mehr wirst du nicht haben) übernehmen und weitergeben.
     
  19. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    24.02.07
    Beiträge:
    253
    jo, das klappt prima. auch mit der osascript-Übergabe. V I E L E N D A N K !
    der pure-ftpd zickte anfangs allerdings wieder herum. ich konnte mich nicht einloggen. nach wildem herumgeklicke und diversen starts und stopps, ohne eigentlich etwas zu ändern, klappte es dann aber irgendwann.
    und eine frage hätte ich dann noch:
    kann man den pure-ftpd jetzt auch irgendwie per shell oder applescript mit -o plus uploadscript-deamon (verlangt admin-rechte) starten?
     
  20. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Klar geht das. Wenn du einmal ein sudo ps -wax im Terminal eingibst, siehst du den Aufruf vom pure. Der bekommt eh alle Optionen direkt übergeben.
    Schau einfach mal auf www.pureftpd.org nach. Da steht alles. Das gilt auch für den Mac :)
    Ach, es muss funktionieren. Das ist einer der einfachsten Server den ich kenne. Allein wegen den Uploadscripten haben wir den im Einsatz gehabt (ca. 200 Rechner Deutschland weit verteilt). Da halt mit MD5 Summen, automatischen entpacken von Zips und Tars in bestimmten Verzeichnissen usw.
     

Diese Seite empfehlen