Prozess nach einer Stunde "nichtstun" killen?

  • Hallo zusammen,

    ich hab folgendes Problem:
    Da ich vor einem Proxy sitze, funktionieren die FTP UDFs bei mir nicht.
    Auch mit FtpSetProxy kriege ich keine Verbindung auf einen FTP Server.
    Nun habe ich das ganze etwas umständlich gelöst mit Filezilla 2.x, welche (noch) batchfähig sind.

    Das Problem ist, dass Filezilla per Batch nicht viel kann (download/upload/überschreiben).
    Es unterstützt auch keine Wildcards..Ich muss nun täglich auf vier Servern Dateien downloaden, die alle
    denselben Aufbau haben : Tagesdatum_bla.zip

    Nun kann es aber passieren, dass an einem Tag keine Dateien zum download vorliegen.
    Hier bleibt das Fenster von Filezilla offen und in der Logausgabe steht "Datei nicht gefunden"..
    Blöderweise läuft dann das Skript nicht weiter und auch Filezilla schließt sich nicht.

    Meine Frage nun:

    Kann ich es einrichten, dass der Filezilla Prozess nach einer Stunde "nichtstun" gekillt wird, oder
    was vielleicht noch besser wäre: Kennt ihr (gute) batchfähige FTP-Clients? (Wget for Windows und ncftp hab ich schon ausprobiert, aber die funktionieren irgendwie nicht)

    Einmal editiert, zuletzt von Davor (8. Mai 2008 um 15:45)

  • > "... (gute) batchfähige FTP-Clients? ... aber die funktionieren irgendwie nicht)"

    ... gute: mein Problem hab ich damit gelöst. - aber ist ja röölativ.

    Wenn das jetzt ein grundlegendes Problem mit FTP ist, wird auch dies nicht funktionieren:

    CURL bei: http://curl.haxx.se/

  • Hallo,

    ich weiß leider immernoch nicht, warum FTP bei mir nicht funktioniert.
    Da hattest du vor ein paar Monaten doch auch was probiert (ich hab das Thema
    damals im Forum angesprochen)..Leider funktioniert das immernoch nicht.

    Wenn du mir sagst, was du mit parsen meinst!? :)


    //EDIT

    Das ist bei uns aber kein generelles Problem.
    Total Commander funktioniert wunderbar, genauso wie Filezilla. Selbst der Standard Windows Client kommt mit dem Proxy zurecht.
    Ich hab aber bis jetzt kein batchfähiges Programm gefunden, welches funktioniert.

    2 Mal editiert, zuletzt von Davor (7. Mai 2008 um 16:17)

  • Also ich versuch das mal zu erklären (ist n bissl kompliziert)

    In AutoIT sieht das ganze folgendermaßen aus:

    [autoit]


    ; Runterladen der Datei
    $transfer_file = $filezilla & '\filezilla.exe -d ' & '"ftp://user:pw@Server.de/Verzeichnis/' & @YEAR & @MON & @MDAY & '_Backup.zip"' & ' "' & $target_file & '" -close'
    RunWait($transfer_file)

    [/autoit]

    Wobei $filezilla den Installationsordner von Filezilla beinhaltet und $target_file den Zielordner.
    Sieht komplizierter aus, als es ist. Ist im Prinzip nur der Aufbau des Befehls, um Filezilla Batch-basiert ansprechen zu können.

    Wenn es eine Datei mit Tagesdatum gibt, die gedownloaded werden kann, funktioniert das ganze auch wunderbar.
    Existiert die Tagesaktuelle Datei aber nicht (das kann durchaus vorkommen), dann bleibt Filezilla geöffnet und gibt
    im Logfenster "File or path not found" aus. Jetzt kann ich das in AutoIT ja nicht verfolgen, ob die Datei nun runtergeladen wird, oder ob Filezilla noch offen ist, weil er die Datei nicht gefunden hat.

    Daher schwebst mir vor, den Prozess nach einer Stunde einfach zu killen, falls Filezilla noch offen ist, damit von den anderen Servern gedownloaded werden kann.

    Hoffe, ich konnte es halbwegs verständlich erklären. :S

  • Hi,

    vielen Dank!
    Die erste Lösung hört sich super an und würde auch funktionieren.
    Jetzt darf ich aber natürlich kein RunWait verwenden, da das Skript an dieser Stelle wartet und nichts ausführt.
    Wenn ich aber nur Run verwende, besteht die Gefahr, dass das Skkript versucht, schon die anderen Dateien runterzuladen.

    Wie kann man das lösen? :huh:

  • Hi,

    1) du weißt ja wo die Datei hingeladen wird. Also könntest 5 sek nach dem Downloadstart mit if not FileExists dann abbrechen
    2) Das Log nach dem Start nach 'File or path not found' durchsuchen

    Mega

    irgendwie sehe ich in der 1) aussage einen logischen fehler. nur weil eine datei existiert heist das noch lange nicht das es die selbe ist. ?(

    • Offizieller Beitrag

    Hi,

    vielen Dank!
    Die erste Lösung hört sich super an und würde auch funktionieren.
    Jetzt darf ich aber natürlich kein RunWait verwenden, da das Skript an dieser Stelle wartet und nichts ausführt.
    Wenn ich aber nur Run verwende, besteht die Gefahr, dass das Skkript versucht, schon die anderen Dateien runterzuladen.

    Wie kann man das lösen? :huh:

    Hi,

    Du musst dir überlegen was du manuell für Schritte machen kannst um es sicher zu stellen. Anschließend diese Schritte als Pseudocode aufschreiben und dann in Autoit automatisieren.

    @: hxhjx : Da hast du natürlich recht. Die Frage ist wie weit man es treiben muss. Man kann ja auch die Größe vergleichen den Namen der Dtei mit einem Zeitstempel versehen usw. usw.

    Mega