FTP Server inhalt auslesen

  • Hi,
    Wie schaffe ich es den Inhalt eines FTP Servers auszulesen und ihn z.B in eine List Box wieder auszugeben.
    Natürlich soll muss ma erst die ganzen daten (Server/Host,PW;User) angeben ? ?( ?(

  • Schau dir mal die ganzen _FTP funktionen in der Hilfe an.

    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.

  • Kapiere ich irgendwie net kann mir wer ein Beispiel script machen?

    diese Mühe haben sich schon die Ersteller der Hilfe gemacht. Hier das leicht abgeänderte Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <FTPEx.au3>
    $server = 'ftp.csx.cam.ac.uk'
    $username = ''
    $pass = ''

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

    $Open = _FTP_Open('MyFTP Control')
    $Conn = _FTP_Connect($Open, $server, $username, $pass)

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

    $aFile = _FTP_ListToArray($Conn, 2)
    ConsoleWrite('$NbFound = ' & $aFile[0] & ' -> Error code: ' & @error & @crlf)
    for $i = 1 to $aFile[0]
    ConsoleWrite('$Filename = ' & $aFile[$i] & @crlf)
    Next
    $Ftpc = _FTP_Close($Open)

    [/autoit]

    mfg autoBert

  • Hallo @AgentProxon,
    Nichts gegen dich aber leider können wir mit "das funkt. nicht" wie Sprenger schon sagte nichts anfangen.
    Weil wir können am wenigsten wissen was für einen Fehler du im Script hast, Sind ja schliesslich keine Hellseher.

    Ok dann von mir mal ein paar Vorschläge.

    1. Kontroliere ob der FTP-Benutzer wirklich angelegt ist (ist er warscheinlich eh).
    2. Ist alles richtig geschrieben (CaseSensetive/GroßKleinschreibung).

    Wenn dass nicht klappt und falls ein Fehler in der Console kommt dann poste ihn bitte hier.

    lg,
    Dominik

  • Was du in jedemfall mal testen solltest ist der passiv modus, also eine 1 als 5. Parameter:

    [autoit]

    $Conn = _FTP_Connect($Open, $server, $username, $pass, 1)

    [/autoit]

    Ausserdem muss ggf. noch als 6. Parameter der Port angegeben werden wenn der FTP Server nicht auf Port 21 lauscht. Sollte der FTP Server nur verschlüsselte FTP Verbindungen akzeptieren kannst du die ftpex.au3 soweit ich weiss komplett abhaken, da FTPS / FTPES nicht supportet werden.

    Ansonsten wiegesagt hier mal die Ausgabe der Console aus Scite posten.

    EDIT: Ahja und bei mir hat die Firewall gemeckert, also ggf. auch deine Firewall deaktivieren oder Freigaben für dein script/scite erstellen.

    Einmal editiert, zuletzt von misterspeed (4. Dezember 2010 um 13:17)

  • diese Mühe haben sich schon die Ersteller der Hilfe gemacht. Hier das leicht abgeänderte Beispiel

    Nur da kommt leider nie was wenn ich Username etc ein gebe!


    Das Beispiel ist für einen FTP-Server, bei dem du weder Usename noch Passwort benötigst ein Beispiel für deinen Server skripten kann ja nicht klappen, da du ja (zu Recht) die Anmeldedaten für dich behälst,

    mfg autoBert

  • Also mit "Es geht nicht" meine ich er macht rein garnichts kein error einfach nichts und er erstellt auch kein Consolen fenster oder so ;(

  • Du sollt das ja auch in Scite ausführen und nicht compilieren. Du sieht die Ausgabe dann unten in der Scitekonsole.

    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.

  • Hallo AgentProxon,

    ich habe ein Beispiel gescripted das mit Hilfe der FTP-Funktionen

    [autoit]

    _Ftp_ListToArray2D
    _FTP_DirSetCurrent
    _FTP_DirGetCurrent

    [/autoit]

    den Inhalt des Servers: ftp.csx.cam.ac.uk in einem TreeView darstellt:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GuiTreeView.au3>
    #include <GUIConstantsEx.au3>
    #include <FTPEx.au3>
    #include <Array.au3>

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

    $start = TimerInit()

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

    $hGui = GUICreate('FTP-DirViewer', 1024, 540)
    $hTreeView = GUICtrlCreateTreeView(10, 10, 380, 490, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
    Global $hTreeViewRoot = GUICtrlCreateTreeViewItem("root", $hTreeView)
    $hStatus = GUICtrlCreateLabel("", 2, 510, 1020, 25)
    ;$hListView = GUICtrlCreateListView("Dateiname",400, 10, 614, 520, Default, $WS_EX_STATICEDGE)
    GUISetState()
    ToolTip('Please wait...')

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

    Global $server = 'ftp.csx.cam.ac.uk' ;'ftp.lima-city.de';
    $username = '';'autobert'
    $pass = '';'KR6gnbOsLO'

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

    $Open = _FTP_Open('MyFTP Control')
    $Conn = _FTP_Connect($Open, $server, $username, $pass)
    ;_GUICtrlTreeView_BeginUpdate($hTreeView)
    _ShowAllFTPDirs($hTreeViewRoot, "")
    ;_GUICtrlTreeView_EndUpdate($hTreeView)
    ToolTip('')
    $end = TimerDiff($start)
    MsgBox(0, "Zeit:", $end)
    Do
    Until GUIGetMsg() = -3

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

    ;===============================================================================
    ; Function Name: _ShowAllFTPDirs($hTVNode, $sPath, $bFiles)
    ; Description:: erstellt ein TreeView mit Verzeichnissen
    ; Parameter(s): $hTVNode = ControlID/Handle des TreeViewsItems in dem die Knoten hinzgefügt werden
    ; $sPath = Verzeichnispfad, der dargestellt werden soll
    ; $bFiles = True = auch Dateien anzeigen, False = nur Verzeichnisse
    ; Author(s): AutoBert (http://www.autoit.de)
    ;===============================================================================
    Func _ShowAllFTPDirs($hTVNode, $sPath, $bFiles = True)
    Local $hTVItem, $aFiles, $aFolders, $hFileItem, $FolderColor = 0x0000FF, $Folder, $aCount[2] = [0, 0]
    If $sPath <> "" Then
    _FTP_DirSetCurrent($Conn, $sPath)
    $sPath = _FTP_DirGetCurrent($Conn)
    EndIf
    $aFolders = _Ftp_ListToArray2D($Conn, 1)
    ;_ArrayDisplay($aFiles)
    ;_ArrayDisplay($aFolders)
    If IsArray($aFolders) Then
    For $i = 1 To $aFolders[0][0]
    If $aFolders[$i][0] <> '.' And $aFolders[$i][0] <> '..' Then
    GUICtrlSetData($hStatus, $sPath & "/" & $aFolders[$i][0])
    $hTVItem = GUICtrlCreateTreeViewItem($aFolders[$i][0], $hTVNode)
    GUICtrlSetColor(-1, $FolderColor)
    _GUICtrlTreeView_SetIcon($hTreeView, $hTVItem, 'shell32.dll', 3, 2)
    _GUICtrlTreeView_SetIcon($hTreeView, $hTVItem, 'shell32.dll', 110, 4)
    GUICtrlSetColor(-1, $FolderColor)
    _ShowAllFTPDirs($hTVItem, $sPath & "/" & $aFolders[$i][0], $bFiles)
    EndIf
    Next
    EndIf
    If $bFiles Then
    $aFiles = _Ftp_ListToArray2D($Conn, 2)
    If IsArray($aFiles) Then
    For $i = 1 To $aFiles[0][0]
    GUICtrlSetData($hStatus, $sPath & "/" & $aFiles[$i][0] & " Grösse" & $aFiles[$i][1])
    $hTVItem = GUICtrlCreateTreeViewItem($aFiles[$i][0], $hTVNode)
    _GUICtrlTreeView_SetIcon($hTreeView, $hTVItem, 'shell32.dll', 2)
    Next
    EndIf
    EndIf
    EndFunc ;==>_ShowAllFTPDirs

    [/autoit]

    Lass dieses Skript so wie es ist bei dir laufen. Unter Umständen musst du eine Ausnahmeregel für deine Firewall erstellen,

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (5. April 2012 um 23:36)