Direktes Schreiben in eine txt-Datei eines FTP-Verzeichnisses möglich?

  • Hallo zusammen,

    ich habe trotz Forumssuche keine Antwort auf meine Frage gefunden, deswegen dieser Post.

    Momentan habe ich ein Script, welches mir von einem pw-geschützten FTP-Verzeichnis eine txt-Datei auf die lokale Festplatte herunterlädt, in diese nach einer GUI-Abfrage einen Wert einträgt und dann die Datei wieder uploadet, wo sie weiterverarbeitet werden soll.

    Das Problem, welches sich hierbei ergibt ist dieses, dass beim Dateiupload die Windows-Firewall (Win XP Pro SP2) Alarm schlägt, ob der Upload gestattet werden soll.
    Ich kann diese Abfrage auch nicht automatisieren, weil User, welche diese Script berechtigt ausführen dürfen, möglicherweise noch andere Firewalls im Einsatz haben.

    Das Script sollte eigentlich immer vom lokalen Client aus gestartet werden, da ich zunächst überprüfen lasse, ob der Client überhaupt berechtigt ist (Check von ProzessorID und FestplattenID).

    Gibt es eine Möglichkeit direkt in eine txt-Datei, welche in einem FTP-Verzeichnis liegt zu schreiben, ohne diese vorher auf dem lokalen PC heruntergeladen zu haben ?

    Vielen Dank für Eure Hilfe.

    Mick

  • Soviel ich weiß geht das nicht (hab mir auch grad nochmal ftp befehle angeschaut) also wie machst du den upload?
    Wenn du mit FTP.au3 machst versuch doch einfach mal "manuell" upzuloaden ob dann auch die meldung kommt. Weil ich glaube direkt auf dem Server verändern geht nichts. Außer du machst das mit PHP Scripthilfe.

  • Guten Morgen zusammen,

    @I3iLLiG

    Also den Dateiupload habe ich folgendermassen realisiert.

    Spoiler anzeigen
    [autoit]

    ]#include "ftp.au3"
    #RequireAdmin
    $server = 'mein-ftp-verzeichnis.de'
    $username = 'user123'
    $pass = 'geheim'
    $dllhandle = DllOpen('wininet.dll')
    $Open = _FTPOpen('MyFTP Control')
    $Conn = _FTPConnect($Open, $server, $username, $pass)
    MsgBox(0,"",$Conn)
    $Ftpp = _FtpPutFile($Conn, 'C:\ablage\help.txt', '/userhelp/help.txt')
    If @error Then
    MsgBox(0,"Error",@error)
    EndIf
    $Ftpc = _FTPClose($Open)
    DllClose($dllhandle)

    [/autoit]

    Der funktioniert auch problemlos, aber halt eben nur, wenn in der Firewall der Upload gestattet wird. An die Möglichkeit, das vielleicht über eine SQL-DB zu lösen hab ich bisher nicht gedacht, wobei ich auch dazu sagen muss, dass ich in dieser Richtung keine Kenntnisse habe und mich in diese Materie auch erst mal reinarbeiten müsste.

    Wenn alles nichts hilft, wird mir aber wohl nichts anderes übrigbleiben.
    Vielleicht versuch ich das auch erst einmal nur mit SQLite, da ich den Funktionsumfang, den mir MySQL bietet vermutlich gar nicht brauchen werde.

    Danke für Eure Lösungsvorschläge, ich werd dann mal testen gehen und berichten, wenn´s geklappt hat. Ist für andere sicherlich auch interessant. 8o

    FG

    Mick

  • Zitat

    Der funktioniert auch problemlos, aber halt eben nur, wenn in der Firewall der Upload gestattet wird.

    Ja, dafür ist ja auch eine Firewall da :) Sie soll ja alles kontrolliren, was ins Internet gesendet oder empfangen wird.

  • Also meinen bescheidenen Kentnissen zufolge ist es nicht möglich auf dem server von "außen" (auch mit pw) etwas zu verändern. Also denke ich kommst du NICHT um den upload rum(bei FTP).

    MySQL , Datenbak kenn ich mich Null aus.

    PHP würde auch gehen wir hatten hier mal ein TOPIC im FOrum Text auf Server speichern und anzeigen lassen oder so

    ich suche ihn dir mal raus..

    //edit so: [ offen ] text auf server speichern [gelöst] und anzeigenlassen [Gelöst]und immer den zum aktuelsten runer scrollen und automatich aktualisiren[offen]
    Kannst ja mal surpobieren ob die Firewall trotzdem Alarm schlägt. Da ist alles verständlich erklärt in dem Thread ich glaube du verstehst das deshalb ganz gut und ch muss nix dazu sagen.

  • So, ich hab jetzt noch "zwei Spielereien" ausprobiert.

    Windows XP beherrscht FTP ja auch über die Kommandozeile, allerdings kommt bereits nach dem Login auf den FTP-Server beim Kommando "dir" die windowseigene Firewall und fragt dezent und höflich an, ob der Zugriff gestattet werden soll. :thumbdown:
    Funktioniert so also auch nicht.

    Beim Stöbern im Netz bin ich dann noch auf PSFTP (das ist ein PuTTY-Tool auf Kommandozeile) gestossen.
    Hier funktioniert sowohl der Login wie auch das Wechseln in die verschiedenen Unterverzeichnisse des FTP-Servers problemlos. Allerdings poppt zum Login gleich mal die Eingabeaufforderung hoch und stellt den Login-Namen im Klartext dar. 8|
    Das ist natürlich schon mal etwas unglücklich, hier muss man schauen, ob man das noch irgendwie unterbinden kann (evtl. mit ECHO OFF).

    Die Windows Firewall interessiert das erstmal alles nicht. Allerdings wird in der geöffneten Eingabeaufforderung auch noch danach gefragt, ob der Schlüssel zwischen Server und Client ausgetauscht werden soll, damit dieser beim Client in die "Known-Hosts" eingetragen werden kann.
    Diese Anfrage muss zunächst quittiert werden, sonst wird die Verbindung gekappt.

    Alles in allem nicht wirklich zufriedenstellend.

    Werd mich wohl doch auch mal mit SQL bzw. SQLite auseinandersetzen müssen und schauen, ob´s evtl. so funktioniert.

    FG

    Mick

  • Schau dir mal bitte den post oben an von mir mit dem link zum anderen beitrag.
    Da steht welchen php script du aufm server laufen haben musst dann öffnest du die I-net seite mit _INetGetSource und gibst in die url deinen text + titel ein und tada auf dem server liegt eine .txt datei oder was auch immer. Da dürfte die Firewall auch nicht alarm schlagen.

  • Schau dir mal bitte den post oben an von mir mit dem link zum anderen beitrag.
    Da steht welchen php script du aufm server laufen haben musst dann öffnest du die I-net seite mit _INetGetSource und gibst in die url deinen text + titel ein und tada auf dem server liegt eine .txt datei oder was auch immer. Da dürfte die Firewall auch nicht alarm schlagen.


    Danke für Deinen Hinweis. Werd ich gleich mal machen und schauen, ob´s mit PHP vielleicht sogar am einfachsten zu lösen ist.


    Grüß

    Mick

  • Noch einen kleinen Hinweis, bevor Du Dich in SQLite einarbeitest, solltest Du mal prüfen welche Ports dafür frei sein müssen. Schließlich funkt Dir sonst die Firewall auch da wieder dazwischen.

    Gruß,

    TrueMu