Moin,
seit 3 Tagen sitze ich an dem Problem, dass ich nach erfolgreicher FTP-Verbindung nicht in einer übergeordnetes Verzeichnis wechseln kann. Sprich: befinde ich mich im Verzeichnis /app/Anwendung/FTP-Verzeichnis komme ich nicht nach /var/app/Anwendung/Log-Verzeichnis, um von dort die Log-Files zu ziehen.
An den Rechten liegt es schonmal nicht. Erstelle ich ein Script und führe dies mit psftp aus, funktioniert das hervorragend. Siehe Code:
Spoiler anzeigen
Func createScriptFile($fileFlag=0)
local $tempRet
If FileExists(@ScriptDir & "\getTraceLog.scr") Then
FileDelete(@ScriptDir & "\getTraceLog.scr")
EndIf
If $fileFlag = 1 Then
$tempRet = FileOpen(@ScriptDir & "\getTraceLog.scr", 1)
If $tempRet <> -1 Then
FileWrite($tempRet, 'get "/var/app/Anwendung/trace.log" "' & @ScriptDir & '\trace_new.log"' & @CRLF)
FileWrite($tempRet, 'quit')
Endif
FileClose($tempRet)
EndIf
EndFunc
Func getTraceLog($Server = "")
If $Server = "" Then
$Server = $selectedServer ; $selectedServer wird ggf. an anderer Stelle ermittelt (aus ListBox)
EndIf
createScriptFile(1)
If FileExists($traceFile) Then ; $traceFile ist der Name der Datei
FileDelete($traceFile)
EndIf
$traceServer = $Server
If $traceServer <> "0" Then
RunWait('"' & @ComSpec & '" /c ' & "d:\psftp.exe -pw Passwort User -b " & @ScriptDir & "\getTraceLog.scr", @ScriptDir, @SW_HIDE, BitOr($STDERR_CHILD, $STDOUT_CHILD, $STDIN_CHILD))
EndIf
createScriptFile()
EndFunc
Versuche ich das Ganze jetzt mit den gegebenen FTP-Funktionen, lande ich nur im Start-Verzeichnis des FTP-Users. Versuche, mit _FTP_DirSetCurrent das aktuelle Verzeichnis zu wechseln, schlagen fehl bzw. das aktuelle Verzeichnis ändert sich nicht. Hier der aktuelle Code:
Spoiler anzeigen
#include <FTPEx.au3>
#include <array.au3>
#include <file.au3>
Global $traceArray, $aFile, $ftpFileHandle, $string, $h_Handle
$server = 'Server'
$username = 'User'
$pass = 'Passwort'
$Open = _FTP_Open('MyFTP Control')
$Conn = _FTP_Connect($Open, $server, $username, $pass)
If @error Then _Exit()
_FTP_DirSetCurrent($Conn, "/var/app/Anwendung/")
MsgBox(0, "", _FTP_DirGetCurrent($Conn)) ;Ergebnis ist und bleibt "/", egal ob ich vorher ein _FTP_DirSetCurrent mache
$aFile = _Ftp_ListToArray($Conn) ;damit habe ich überprüft, wo ich mich gerade befinde
_ArrayDisplay($aFile)
$aFile = _FTP_FileGet($Conn, "//var/app/Anwendung/trace.log", @ScriptDir & "\trace_new.log") ; verzweifelter Versuch trotzdem was zu holen - wurde auch mit nur einem "/" am Anfang versucht
If @error Then
MsgBox(0, "", "Es wurde nichts geladen")
_exit()
EndIf
$Ftpc = _FTP_Close($Open)
[/autoit] [autoit][/autoit] [autoit]Func _Exit()
Exit
EndFunc
Mache ich was falsch oder ist das mit den bereitgestellten _FTP-Funktionen nicht möglich? Vielen Dank schonmal an euch.