Filewrite auf FTP

  • Huhu
    Ich will die Sicherheit meiner Programme erhöhen. Daher frage ich die IP des Users beim Start ab und lass sie in eine Datei auf meinen FTP schreiben. Nun mein Problem:
    Das erste mal funktioniert alles. Er schreibt brav die IP in die 1. Zeile. Doch ab dem 2. mal macht er einfach gar nichts. Es bleibt die IP in der 1. Zeile stehn doch es kommt nichts dazu.
    Hier mein Code:

    [autoit]

    #include <Inet.au3>
    #include <FTPEx.au3>
    #RequireAdmin
    $ip = _GetIP()
    InetGet("http://xxx.bplaced.net/filemanager/",@TempDir & "\User.txt", 1, 0)
    $file = FileOpen(@TempDir & "\User.txt", 1)
    $write = FileWrite($file,$ip)
    FileClose($file)
    $hFTP=_FTP_Open("FTP")
    $iCon=_FTP_Connect($hFTP, "xxx.bplaced.net", "xxx", "xxx")
    $put = _FTP_FilePut($iCon, @TempDir & "\User.txt", "filemanager/User.txt")
    _FTP_Close($hFTP)
    FileDelete(@TempDir & "\User.txt")
    MsgBox(0,"","fertig")
    Exit 0

    [/autoit]

    Wisst ihr was ich falsch mache?

    Grüße

  • Als erstes mal bitte klären ob du von der Datei auf dem FTP Server oder deiner lokalen Datei sprichst. Kommentier das filedelete mal aus und prüfe ob in der lokalen Datei alles korrekt geschrieben wird. Sollte das passen klappt das überschreiben per FTP nicht.

  • Probier mal anstatt das Fileopen und Filewrite direkt den Befehl

    [autoit]

    Filewriteline

    [/autoit]

    mit dem Dateinamen aus.

    EDIT:

    Hier der Code:


    [autoit]

    #include <Inet.au3>
    #include <FTPEx.au3>
    #RequireAdmin
    $ip = _GetIP()
    InetGet("http://xxx.bplaced.net/filemanager/",@TempDir & "\User.txt", 1, 0)
    FileWriteline((@TempDir & "\User.txt",$ip)
    $hFTP=_FTP_Open("FTP")
    $iCon=_FTP_Connect($hFTP, "xxx.bplaced.net", "xxx", "xxx")
    $put = _FTP_FilePut($iCon, @TempDir & "\User.txt", "filemanager/User.txt")
    _FTP_Close($hFTP)
    FileDelete(@TempDir & "\User.txt")
    MsgBox(0,"","fertig")
    Exit 0

    [/autoit]

    Einmal editiert, zuletzt von sumsum (20. April 2011 um 13:21)

  • FileWriteline((@TempDir & "\User.txt",$ip)

    Du hattest 1 Runde Klammer zuviel^^
    Und dies funktioniert genauso wenig =(
    Und ich spreche davon das ich das Programm ausführe und mir die Datei dann via FlashFXP runterziehe um nachzugucken obs funktioniert hat.

  • das kann sogar richtig sein wenn du selber testtes mit gleicher ip

    würde die zeile so ändern

    [autoit]

    $write = FileWrite($file,$ip& @CRLF)

    [/autoit]


    _GetIP ( )

    Funktion gibt die öffentliche IP-Adresse eines Computers oder Netzwerkes (d.h. die öffentliche IP-Adresse auf der WAN-Seite Ihres Routers, wie Sie diese z.B. von Ihrem Provider bei der Einwahl erhalten). Die Adresse wird bestimmt durch externe Webseiten wie z.B. checkip.dyndns.org oder https://autoit.de/wcf/js/www.whatismyip.com.

    Einmal editiert, zuletzt von sillyboy (20. April 2011 um 13:55)

  • [autoit]

    #include <Inet.au3>
    #include <FTPEx.au3>
    #RequireAdmin
    $ip = _GetIP()
    InetGet("http://xxx.bplaced.net/filemanager/User.txt",@TempDir & "\User.txt", 1, 0)
    $file = FileOpen(@TempDir & "\User.txt", 1)
    $write = FileWrite($file,$ip & @CRLF)
    FileClose($file)
    $hFTP=_FTP_Open("FTP")
    $iCon=_FTP_Connect($hFTP, "xxx.bplaced.net", "xxx", "xxx")
    $delete=_FTP_FileDelete($iCon, "/filemanager/User.txt")
    $put = _FTP_FilePut($iCon, @TempDir & "\User.txt", "filemanager/User.txt")
    _FTP_Close($hFTP)
    FileDelete(@TempDir & "\User.txt")
    MsgBox(0,"","fertig")
    Exit 0

    [/autoit]

    So wird auch nur einmal in die erste Zeile meine IP geschrieben noch beim Restart des Programms wird nicht in die 2. Zeile meine IP noch einmal geschrieben was ja eigentlich so sein soll.

  • Ja und hast mittlerweile kontrolliert ob überhaupt korrekt in deine lokale Temp Datei geschrieben wird?
    Lass dir den Wert der Variable $write doch mal ausgeben plus den Errorcode:

    [autoit]


    $write = FileWrite($file,$ip & @CRLF)
    msgbox(0,"","Rückgabewert von filewrite: " & $write & @crlf & "Errorcode: " & @error)

    [/autoit]

    Außerdem solltest du kontrollieren ob die Datei wirklich vom FTP gelöscht wird, auch hier sind die Rückgabewerte interessant:

    [autoit]


    $delete=_FTP_FileDelete($iCon, "/filemanager/User.txt")
    msgbox(0,"","Rückgabewert von _FTP_FileDelete: " & $delete & @crlf & "Errorcode: " & @error)

    [/autoit]
  • _f


    _FTP_Close($iCon) fehlt auch

    bespiel filewrite

    [spoiler]

    [autoit]


    #include <Inet.au3>
    $file = FileOpen("test.txt", 1)
    $file1 = FileOpen("test1.txt", 1)
    $ip = _GetIP()
    ; Prüfen, ob Datei im Schreibmodus geöffnet ist
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    For $i = 1 to 5
    FileWrite($file,$ip& @CRLF)
    Next
    ;;;;;;;;jetz ohne zeilen umbruch
    If $file1 = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    For $i = 1 to 5
    FileWrite($file1,$ip)
    Next

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

    oiler]

  • Hallo sumsum,

    bin erst spät in den Thread eingestiegen, da habe ich wohl deinen Beitrag überlesen. Aber FileWriteLine muss funktionieren, da hat Baam wohl im damaligen Stand noch irgendeinen anderen Fehler gehabt bzw. beim Überprüfen einen Fehler gemacht,

    mfg autoBert

  • hier ganz anderer weg mit WinINet gebrauchten au3 im anhang

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------
    Script Function:
    Beispiel um Daten von einem FTP Server zu laden oder hoch zu laden
    :
    Schritt 1:
    Öffne die Verbindung zu einem Server (Server, Port, User,... stehen in
    den Variablen)
    Schritt 2:
    Prüfe ob auf dem Server eine .txt Datei vorhanden ist, falls
    ja, lade sie in das derzeitige Autoit Arbeitsverzeichnis, falls nein,
    weiter bei Schritt 3.
    Schritt 3:
    Erstelle / füge der Daei .txt eine Textzeile hinzu
    Schritt 4:
    Lade die Datei auf den FTP Server und überschreibe die vorhandene

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

    #ce ----------------------------------------------------------------------------
    #include <WinINet.au3>
    Dim $user = 'dein username '
    Dim $pwd = 'dein passwort '
    Dim $server ='dein sever'
    Dim $port = 21
    Dim $searchfile = '/log.txt' ; ABSOLUTERPFAD ZUM DOKUMENT!!!!!

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

    #Region Schritt 1
    ; WinINet Starten
    _WinINet_Startup()
    ; Verbindung öffnen
    $InternetOpen = _WinINet_InternetOpen()
    ; Verbindung herstellen
    $InternetConnect = _WinINet_InternetConnect($InternetOpen, $INTERNET_SERVICE_FTP, $server, $port, 0, $user, $pwd)
    #EndRegion Schritt 1
    #Region Schritt 2
    ; Suchen
    $searchresult = _WinINet_FtpFindFirstFile($InternetConnect,$searchfile)
    ; Wenn die Datei gefunden ist, lade sie runter
    If Not @error Then
    _WinINet_FtpGetFile($InternetConnect, $searchfile, 'log.txt')
    EndIf
    #EndRegion Schritt 2
    #Region Schritt 3
    ; Schreibe eine Zeile in die Datei blog4ittest.txt
    $f = FileOpen('log.txt', 9)
    FileWriteLine($f, @HOUR & ':' & @MIN & ':' & @SEC)
    FileClose($f)
    #EndRegion Schritt 3
    #Region Schritt 4
    ; Datei hochladen
    _WinINet_FtpPutFile($InternetConnect, 'log.txt', $searchfile)
    #EndRegion Schritt 4
    #Region Schritt 5
    ; Verbindung schliessen
    _WinINet_InternetCloseHandle($InternetConnect)
    _WinINet_InternetCloseHandle($InternetOpen)
    ; WinINet runterfahren
    _WinINet_Shutdown()
    #EndRegion Schritt 5

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