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 ?
FTP Server inhalt auslesen
-
- [ offen ]
-
AgentProxon -
3. Dezember 2010 um 16:08 -
Geschlossen -
Erledigt
-
-
Schau dir mal die ganzen _FTP funktionen in der Hilfe an.
-
Hab ich schon aber ich komme damit nicht so recht weiter
-
Scha dir speziell _FTP_ListToArray an,
mfg autoBert
-
Kapiere ich irgendwie net kann mir wer ein Beispiel script machen?
-
Da ist doch eines dabei in der Hilfe.
-
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>
[/autoit] [autoit][/autoit] [autoit]
$server = 'ftp.csx.cam.ac.uk'
$username = ''
$pass = ''$Open = _FTP_Open('MyFTP Control')
[/autoit] [autoit][/autoit] [autoit]
$Conn = _FTP_Connect($Open, $server, $username, $pass)$aFile = _FTP_ListToArray($Conn, 2)
[/autoit]
ConsoleWrite('$NbFound = ' & $aFile[0] & ' -> Error code: ' & @error & @crlf)
for $i = 1 to $aFile[0]
ConsoleWrite('$Filename = ' & $aFile[$i] & @crlf)
Next
$Ftpc = _FTP_Close($Open)mfg autoBert
-
Nur da kommt leider nie was wenn ich Username etc ein gebe!
-
Hi,
mit 'das funktioniert nicht' können wir nichts anfangen. Sind irgentwelche Erros ausgegeben worden ? -
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.
-
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
-
Du musst die Ftpadresse angeben (mit ".", dass war mein Fehler, es muss so heißen: ftp.testserver.de, und nicht ftp://testserver.de).
Dann das Passwort und den Benutzernamen. -
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.
-
Hallo AgentProxon,
ich habe ein Beispiel gescripted das mit Hilfe der FTP-Funktionen
[autoit]_Ftp_ListToArray2D
[/autoit]
_FTP_DirSetCurrent
_FTP_DirGetCurrentden Inhalt des Servers: ftp.csx.cam.ac.uk in einem TreeView darstellt:
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiTreeView.au3>
#include <GUIConstantsEx.au3>
#include <FTPEx.au3>
#include <Array.au3>$start = TimerInit()
[/autoit] [autoit][/autoit] [autoit]$hGui = GUICreate('FTP-DirViewer', 1024, 540)
[/autoit] [autoit][/autoit] [autoit]
$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...')Global $server = 'ftp.csx.cam.ac.uk' ;'ftp.lima-city.de';
[/autoit] [autoit][/autoit] [autoit]
$username = '';'autobert'
$pass = '';'KR6gnbOsLO'$Open = _FTP_Open('MyFTP Control')
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$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]
; 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 ;==>_ShowAllFTPDirsLass dieses Skript so wie es ist bei dir laufen. Unter Umständen musst du eine Ausnahmeregel für deine Firewall erstellen,
mfg autoBert