Datenrollout auf mehrer FTPs

  • Hallo Leute,

    ich hänge mal wieder komplett!

    Ich versuche seit Tagen ein Script zu schreiben, daß auf mehrere FTP-Server eine Datei kopiert und überprüft, ob dies erfolgt ist mit Protokollierung.

    Mein Problem ist, das mir nicht gelingt ein array einzubinden in ein FTP-Script. Also d.h. ein Script das die Datei auf einen FTP-Server verteilt hab ich hinbekommen, nur das einlesen einer ini- bzw. txt-Datei mit
    mehreren FTP-Servern nicht.

    Ich habe auch schon fast überall nachgeschaut.

    Hat jemand sowas schonmal entworfen???

    Wer kann mir helfen?

    euer
    maddown

  • Das einfachste ist wohl das dein Script in eine Funktion machts und dann einfach dieser Funktion dann dern Servernamen und Zugangsdaten übergibst.


    Also z.b. so:

    Spoiler anzeigen
    [autoit]

    #include <file.au3>
    _FileReadToArray("serverliste.txt", $aRecords)
    For $x = 1 To $aRecords[0]
    ftpserver($aRecords[$x])
    Next

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

    Func ftpserver($serveradresse)

    EndFunc

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Der Fehler liegt darin, dass deine Funktion ftpfutros() heißt du aber in der For- Schleife die Funktion server() aufrufst.


    So wäre es richtig:

    Spoiler anzeigen
    [autoit]

    #include <WinINet.au3>
    #include <file.au3>

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

    Global $IniFile = @ScriptDir & "\ftpserver.txt"
    Global $DirStart[2] = ["", "C:\Dokumente und Einstellungen\all user\Desktop\AutoIT\Akutell\TestDateiMusic.mp3"]
    Global $DirZiel[2] = ["", "/images/TestDateiMusic.mp3"]
    Dim $aRecords

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

    _FileReadToArray("ftpserver.txt", $aRecords)
    For $x = 1 To $aRecords[0]
    ftpfutros($aRecords[$x])
    Next

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

    Func ftpfutros($server)
    Dim $user = "ftpuser"
    Dim $pwd = "password"
    ;Dim $server = "10.1.1.99"
    Dim $port = 21
    Dim $searchfile = "/images/TestDateiMusic.mp3"

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

    ;WinINet Starten
    _WinINet_Startup()
    ;Verbindung öffnen
    $InternetOpen = _WinINet_InternetOpen()
    ;Verbindung herstellen
    $InternetConnect = _WinINet_InternetConnect($InternetOpen, $INTERNET_SERVICE_FTP, $server, $port, 0, $user, $pwd)
    ;Suchen
    $searchresult = _WinINet_FtpFindFirstFile($InternetConnect, $searchfile)
    ;Datei hochladen
    _WinINet_FtpPutFile($InternetConnect, "TestDateiMusic.mp3", $searchfile)

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

    ;Verbindung schliessen
    _WinINet_InternetCloseHandle($InternetConnect)
    _WinINet_InternetCloseHandle($InternetOpen)
    ;WinINet runterfahren
    _WinINet_Shutdown()
    EndFunc ;==>ftpfutros

    [/autoit]

    Du kennst aber schon die _FTP Autoitfunktionen oder? Hier mal mit _FTP allerdings ungetestet:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <FTPEx.au3>

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

    Global $IniFile = @ScriptDir & "\ftpserver.txt"
    Global $DirStart[2] = ["", "C:\Dokumente und Einstellungen\all user\Desktop\AutoIT\Akutell\TestDateiMusic.mp3"]
    Global $DirZiel[2] = ["", "/images/TestDateiMusic.mp3"]
    Dim $aRecords

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

    _FileReadToArray($IniFile, $aRecords)
    For $x = 1 To $aRecords[0]
    ftpfutros($aRecords[$x])
    Next
    P
    Func ftpfutros($server)
    Dim $user = "ftpuser"
    Dim $pwd = "password"

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

    $Open = _FTP_Open('')
    $Conn = _FTP_Connect($Open, $server, $user, $pwd)
    _FTP_FilePut($Conn, $DirStart[1], $DirZiel[1])

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

    If @error Then
    MsgBox(0, "Fehler", @error)
    EndIf

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

    _FTP_Close($Open)

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

    EndFunc ;==>ftpfutros

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (9. September 2011 um 14:19)

  • Hallo Chip,

    erstmal vielen Dank für deine Hilfe. Echt super!

    Nur läuft bei mir kein Script! :(

    Bekomme bei beiden den folgenden Fehler:

    "C:\Programme\AutoIt3\Include\FTPEx.au3(10,40) : ERROR: $GENERIC_READ previously declared as a 'Const'"


    Im Netz find ich leider dazu nichts!

    Hast du noch ne Idee?

    Gruß
    Maddown