Seite runterladen und via ftp hochladen

  • Tag

    Ich würde gerne für mein Board, jeweils den neuesten Comic von Explosm.net (http://explosm.net) gerne automatisch mit AutoIt runterladen und dann im Anschluss via FTP auf meinen Server hochladen (da explosm leider bei manchen via WebWasher gesperrt ist).
    Betreffend FTP upload und solchen Sachen konnte ich mit der Suche nichts finden. Den Download einer Seite stelle ich mir an sich nicht allzu schwer vor. Die Hilfe von AutoIt spuckt auch nur 2-3 Sachen über FTP aus was eigentlich nur den Proxy für FTP betrifft. Kann mir jemand eine kleine Hilfestellung geben, wie ich mit AutoIt auf einen Server verbinde und einen Ordner hochlade?
    Eigentlich hätte ich nur das Bild selber downloaden und dann uploaden wollen, aber im Gegensatz zum Link ist dieser nicht durchnummeriert, sondern hat jedes mal einen spezifischen Namen. Vielen Dank schonmal :)

    Einmal editiert, zuletzt von ahatius (23. April 2009 um 19:41)

  • Hallo ahatius.

    Bitte lese zuvor die Nutzungsbestimmungen der angegebenen Seite.

    Ansonsten nutze mal die Suchfunktion mit den Begriffen: ftp und/oder download. Da solltest Du auf jeden Fall Lösungsansätze finden und wenn Du dann nicht wieter kommst, dann poste einfach das was Du bis dahin gescriptet hast.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Wie gesagt, wenn ich in der Suche z. B. nur FTP eingebe, kommen 0 Ergebnisse, was ich persönlich aber schwer zu glauben finde.

  • ftp = upload, also dann suchst Du nach ftp upload und da gibt es einiges. Suchen heißt auch die Wörter die damit zu tun haben mal einsetzen. Hier ist upload und ftp im Zusammenhang zu sehen.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • [autoit]

    #include <String.au3>
    #include <FTP.au3>
    $server = 'server.provider.ch'
    $username = 'login'
    $pass = _StringEncrypt(0, "Verschlüsseltes Passwort", "MD5 Hash")

    [/autoit][autoit][/autoit][autoit]

    $Open = _FTPOpen('Upload')
    $Conn = _FTPConnect($Open, $server, $username, $pass)
    $Ftpp = _FtpPutFile($Conn, 'c:\test.txt', '/')
    $Ftpc = _FTPClose($Open)

    [/autoit]

    Klappt so leider nicht :\

    Er scheint einen Fehler beim Upload selber zu haben, da er die Connection aufbauen kann (mittels @error nach jedem Schritt getestet).

    Einmal editiert, zuletzt von ahatius (23. April 2009 um 15:41)

  • versuche es mal ohne das Passwort zu verschlüsseln und ob es so geht. Ergebnis posten und wenn es dran liegt kann man weiter schauen.
    Aber schau dich mal im Forum etwas um, da gibt es so viel über ftp, das kann man kaum an einem Tag lesen und da sollte auch etwas dabei sein, das hilft. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ohne Verschlüsselung hatte ich es bereits probiert, sogar einen anderen Server. Habe es auch mit der FTP_ex.au3 probiert welche ich hier gefunden habe, jedoch das gleiche Ergebnis.

  • Du musst den Namen angeben, den die Datei auf dem Server haben soll und du darfst das passwort nicht verschlüsseln.

    [autoit]

    _FtpPutFile($Conn, 'c:\test.txt', '/test.txt')

    [/autoit]
  • Ok. Er erstellt jetzt das File auf dem Server, jedoch ist diese File leer (egal ob .txt oder .jpg). Jetzt habe ich hier ein wenig gesucht, und bin auf das hier gestossen.
    Ich habe die FTP_ex.au3 genommen, die mit ein paar Funktionen mehr. Nur verstehe ich nicht welche $l_flags er meint, es hat nen Haufen davon, eigentlich in jeder Funktion eine.
    Was ich auch festgestellt habe, ist dass das uploaden nur auf einem Server mit execute Berechtigungen klappt, also 777. Falls man nur 666 hat, klappt es nicht. Na ja jedenfalls, nicht so wichtig. Was genau muss ich jetzt machen um ihn in den Passiv Modus zu versetzen?
    Und bist du sicher dass man das Passwort nicht verschlüsseln darf? Der Verbindungsaufbau scheint zumindest zu gehen (richtige Logindaten).

  • Die FTP_ex ist anders aufgebaut. Du musst bei $i_Passive True einsetzen, dann wird passiv verbunden:

    [autoit]

    _FTPConnect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_Passive )
    _FTPConnect($Open, $server, $username, $pass , True )

    [/autoit]

    Und ja, ich bin mir sicher, dass man das Passwort nicht verschlüsseln darf. Wie soll der Server dann das Passwort prüfen?

  • Grossartig, vielen Dank. Klappt jetzt einwandfrei. Jetzt muss ich nur noch meinen Provider dazu bewegen mir Execute Rechte auf den Server zu geben, damit das Script auch dort hochladen kann, momentan hab ichs auf einem 2. Server von mir probiert. Vielen Dank! :thumbup:

    Btw: Vielleicht hast du's übersehen, aber ich habe ja auch den Schlüssel zum entschlüsseln mitgegeben. An sich wäre es ja unsicher, da man das verschlüsselte Passwort und den Schlüssel dazu hat, aber wenn ich das Script selber dann noch verschleiere sollte das kein Problem sein, zumal ich sowieso der einzige bin der das Script benutzen wird :)

  • Hä? braucht man echt execute-Rechte zum hochladen? Read/Write müsste doch reichen, dachte ich.

  • Nun mein Provider sagte mir dass CMD Uploads aus Sicherheitsgründen gesperrt seien. Ich probiers nochmal, gebe gleich Bescheid.

    Nope, geht nicht. Sobald ich alle Informationen für den eigentlichen Server eintrage, läuft das Script in 2 Sekunden durch, und es befindet sich keine Datei auf dem Server.

  • Hallo,
    ich musste dieses ältere Thema ausgraben weil es meinem Problem am nächsten kommt.

    Ich möchte eine Datei auf meinen FTP laden.

    [autoit]


    #include <String.au3>
    #include <FTPEx.au3>
    $server = 'ftp.de'
    $username = 'user'
    $pass = 'PW'

    [/autoit][autoit][/autoit][autoit]

    $Open = _FTP_Open('nix')
    $Conn = _FTP_Connect($Open, $server, $username, $pass, True)
    $Ftpp = _FTP_FilePut($Conn, "D:\Dienstplan.xlsx", "/users/dienstplan/Dienstplan.xlsx")
    $Ftpc = _FTP_Close($Open)

    [/autoit]

    leider kommt auf dem server nichts an...
    es kommt aber auch kein fehler...
    :(

    Danke & Gruß

    Einmal editiert, zuletzt von Viperdriver2000 (30. Juni 2012 um 19:00)

  • nimm diese Skript aus der dt. Hilfe zu

    _FTP_FilePut
    [autoit]

    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <FTPEx.au3>
    #include <File.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)

    [/autoit] [autoit][/autoit] [autoit]

    _example1()

    [/autoit] [autoit][/autoit] [autoit]

    Func _example1()
    ;lädt eine Datei hoch
    Local $s_ServerName = 'guest.autobert.myplace.net' ;< ==== anpassen
    Local $s_Username = "guest" ;< ==== anpassen
    Local $s_Password = "TopSecret" ;< ==== anpassen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $s_LocalFile = @ScriptDir & "\_FTP_FilePut3.au3" ;< ==== anpassen
    Local $s_RemoteFile = "/FTPTestfiles/_FTP_FilePut3.au3" ;< ==== anpassen
    Local $i_Passive = 0
    Local $l_InternetSession, $l_FTPSession, $errOpen, $errFTP

    [/autoit] [autoit][/autoit] [autoit]

    $l_InternetSession = _FTP_Open('AuoItZilla') ;Öffnet eine FTP Sitzung
    $errOpen = @error
    If Not @error Then
    $l_FTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_Passive) ;Verbindet zu einem FTP Server
    $errFTP = @error
    If Not @error Then
    If _FTP_FilePut($l_FTPSession, $s_LocalFile, $s_RemoteFile) Then
    ConsoleWrite("Upload: erfolgreich" & @CRLF)
    Else
    ConsoleWrite("Upload: fehlgeschlagen " & " " & @error & @CRLF)
    EndIf
    Else
    MsgBox(0, "Connect", "fehlgeschlagen")
    ConsoleWrite("Connect: " & " " & $errFTP & @CRLF)
    EndIf
    Else
    MsgBox(0, "Open", "fehlgeschlagen")
    ConsoleWrite("Open " & " " & $errOpen & @CRLF)
    EndIf
    _FTP_Close($l_InternetSession) ;schliesst die FTP-Sitzung
    EndFunc ;==>_example1

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    du musst deine Daten eintragen und evtl. $i_Passive auf 1 setzen. In der Scitekonsole kannst du erkennen ob ein Fehler aufgetreten ist,

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (30. Juni 2012 um 22:58)

  • ich bekomme als fehler:

    Code
    Open  -1


    egal ob ich die

    Code
    $i_Passive

    auf 0 oder 1 habe...

    Irgendwie verstehe ich gerade nichtmal in welcher zeile der Fehler generiert wird Oo

  • Irgendwie verstehe ich gerade nichtmal in welcher zeile der Fehler generiert wird Oo


    Der Fehler stammt vin hier:

    [autoit]

    $l_InternetSession = _FTP_Open('AuoItZilla') ;Öffnet eine FTP Sitzung

    [/autoit]

    das bedeutet das AutoIt mut den Oarametern keine Internetverbindung aufbauen kann. Ich vermute du gehst über einen Proxy ins Internet, versuche es also einmal so:

    [autoit]

    $l_InternetSession = _FTP_Open('AuoItZilla',$INTERNET_OPEN_TYPE_PRECONFIG ) ;Öffnet eine FTP Sitzung

    [/autoit]

    Sollte dies auch nicht klappen mach ein eigenes Thema auf, da durch den "Gelöst"-Präfix nur wenige hier rein schauen,

    mfg autoBert