• 25.04.2024, 07:54
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

(neue) Datei in Verzeichnis -> automat. FTP upl

Mittwoch, 29. November 2006, 14:38

Hey ihr Programmiermenschen! ;) :-*

Ich habe hier einen Server auf dem von Zeit zu Zeit eine Datei in einen Ordner geschrieben wird. Diese Datei soll sobald sie fertig geschrieben ist auf meinen FTP-Server hochgeladen werden. Nun bräuchte ich von euch n "bischen" Hilfe das ganze zu realisieren :)

Danke schonmal für eure Mühen!!

ps. das ganze möchte ich dann per Dienst auf einem Win2k3 Server laufen lassen -> wie DAS geht weiß ich :)

/edit: Ich sollte noch erwähnen, dass ich nicht unbedingt Geld dafür ausgeben möchte ;)
Da steht nix :-P

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 14:44

dafür gibt es ein kleines programm, hab ich gaaaaanz lang her mal in ner zeitschrift gesehen.. ich fang ma an zu googlen.

edit: damit würds gehen, jedoch mein ich das nicht..

edit2: damit auch, aber ds kostet auch geld..

edit3:
da gibts ne demo, schaumal ob die vlt für deine zwecke ausreicht.

messi

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 15:12

Pah, das kann man ja auch wohl mal eben selbst programmieren! :D

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import ftplib
import os.path
import time

FILENAME = 'test.zip'
FTP_HOST = 'example.com'
FTP_USER = 'username'
FTP_PASSWD = 'password'

def upload_file():
  """Datei hochladen."""
  conn = ftplib.FTP(FTP_HOST, FTP_USER, FTP_PASSWD)
  conn.storbinary('STOR %s' % FILENAME, FILENAME)
  conn.quit()

if __name__ == '__main__':
  while True:
    if os.path.exists(FILENAME):
______upload_file()
    time.sleep(10)


Prüft alle 10 Sekunden, ob eine bestimmte Datei existiert und läd sie dann hoch.

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 15:42

Zitat von »Y0Gi«

Pah, das kann man ja auch wohl mal eben selbst programmieren! :D


Wenn mans kann ;)

Nur noch die ein oder andere Frage zum Verständnis!

sehe ich es richtig, dass ich diese Zeile anpassen muss, damit er ins richtige Verzeichnis auf dem Server schreibt?

Quellcode

1
conn.storebinary('STOR %s' % FILENAME, FILENAME)


wenn ja
wie muss ich das ganze anpassen?? ;)

Dann:
die Variable "FILENAME" greift auf welchen Pfad zu?
Auf den Ordner, in dem die Datei, die mit welcher Dateiendung gespeicher werden muss liegt? Und kann man hier auch "*.*" eintragen, damit alle in dem Verzeichnis liegenden Dateien hochgeladen werden?

und zu guter letzt:
könntest du mir bitte noch eine Zeile hinzufügen, damit die Datei nach dem Upload gelöscht wird? Oder is des zu viel Aufwand?

/edit: sehe ich das falsch oder importierst du da bibliotheken?? Nach meiner logik bräuchte ich die doch auch noch oder?
Da steht nix :-P

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 16:02

damit er ins richtige verzeichnis schiebt musste noch
conn.cwd('bla\irgendwas\')
vor conn.storebinary einbauen

und damit ner die datei löscht noch os.patch.delete(FILENAME)
ans ende der funktion (ich glaube zumindest das der befehl so heißt ;D)

das python script kommt dann einfach in den selben ordner wie die datei

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 16:11

Zitat von »elbarto`«

das python script kommt dann einfach in den selben ordner wie die datei


Das war das einzige, was mir noch sowas von unklar war ;)

thx!
Da steht nix :-P

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 19:20

mag ned :(



wer kanns mir erklären? Meine Datei schaut jetzt so aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import ftplib
import os.path
import time
 
FILENAME = 'test.zip'
FTP_HOST = '***.de'
FTP_USER = '***'
FTP_PASSWD = '****'
 
def upload_file():
  """Datei hochladen."""
  conn = ftplib.FTP(FTP_HOST, FTP_USER, FTP_PASSWD)
  conn.cwd('public_html\ftp')
  conn.storebinary('STOR %s' % FILENAME, FILENAME)
  conn.quit()
 
if __name__ == '__main__':
  while True:
    if os.path.exists(FILENAME):
      upload_file()
    time.sleep(10)


wenn ich bei "conn.cwd('public_html\ftp')" nach des public_html\ftp einen "\" hinmache wird die Klammer danach grün (IDLE als Bearbeitungsprog) - davor ändert sich weder die Farbe noch die Fehlermeldung beim ausführen.

Wenn ich die Zeile ganz rauslasse, dann kommt diese Fehlermeldung:
Da steht nix :-P

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 19:24

ersetz mal die "\" in den ordnerpfaden durch "\\"

edit: Grund: alles was nach einem "\" kommt wird als Special character interpretiert. z.B. "\n" für neue Zeile, "\t" bedeutet Tab, und "\\" wird als "\" gelesen.
edit2: wenn du Unix-Pfade (also "/" statt "\") nimmst sollte es gleich gehen...
Gute work-live-balance ist, wenn man von seinem Privatleben erschöpfter ist als von der Arbeit.

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 19:31

Richtig, idealerweise verwendest du '/', weil die auch unter Windows funktionieren und keine Sonderbedeutung wie der Backslash haben.

Mir ist ein Tippfehler unterlaufen, die Methode zum Speichern heißt storbinary(), ohne 'e'. Daher rührt der zweite Fehler.

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 19:33

Y0Gi coded python blind...
Gute work-live-balance ist, wenn man von seinem Privatleben erschöpfter ist als von der Arbeit.

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 19:39



Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import ftplib
import os.path
import time
 
FILENAME = 'test.zip'
FTP_HOST = '***.de'
FTP_USER = '****'
FTP_PASSWD = '****'
 
def upload_file():
  """Datei hochladen."""
  conn = ftplib.FTP(FTP_HOST, FTP_USER, FTP_PASSWD)
  conn.cwd('//public_html/ftp/')
  conn.storbinary('STOR %s' % FILENAME, FILENAME)
  conn.quit()
 
if __name__ == '__main__':
  while True:
    if os.path.exists(FILENAME):
      upload_file()
    time.sleep(10)


Datei wurde zwar hochgeladen ist aber fehlerhaft...

ps. nochmal danke für eure Mühen :)
Da steht nix :-P

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 19:57

versuchs mal mit
conn.storbinary('STOR %s' % FILENAME, open(FILENAME,'rb'))

so gehts in nem script von mir zumindest mit ner text datei ;D

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 20:00

so, hier nochmal komplett...
jaja, Y0Gi, mit dem blind coden ist es immer so 'ne Sache ;)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import ftplib 
import os.path
import os
import time 
  
FILENAME = 'test.zip' 
FTP_HOST = 'ftp-server.de' 
FTP_USER = '*****' 
FTP_PASSWD = '*****' 
  
def upload_file(): 
    """Datei hochladen."""
    conn = ftplib.FTP(FTP_HOST, FTP_USER, FTP_PASSWD)
    conn.cwd('/public_html/ftp/')
    conn.storbinary('STOR '+ FILENAME, open(FILENAME, "rb"), 1024)
    # wenn man will, dass die Datei nach dem hochladen auch geloescht wird
    # in der naechsten Zeile die fuehrende Raute entfernen
    
    #os.remove(FILENAME)
    
    conn.quit() 
  
if __name__ == '__main__':
    while True:
        if os.path.exists(FILENAME):
            upload_file()
        time.sleep(10)
Gute work-live-balance ist, wenn man von seinem Privatleben erschöpfter ist als von der Arbeit.

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 20:04

Wenn das mit dem python nicht klappen will, schmeiß ich euch auch was in ruby zusammen 8) :P


Ich spar mir den Upload per Hand aber, kate kann direkt auf FTPs schreiben :D

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 20:14

Zitat von »hobbes_dmS«

jaja, Y0Gi, mit dem blind coden ist es immer so 'ne Sache ;)

Das kommt, wenn man blind in der API liest ;)

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 20:43

Jaja irgendwie schon ein schwieriger Fall ;D



Wenn ich die Leerzeile vor dem "def" entferne:

Da steht nix :-P

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 20:47

Du musst darauf achten, dass die Einrückung stimmt.

Hab es mal hier abgelegt, so dass man die Einrückung erkennt (die dieses Forum hier leider kläglich verunglimpft).

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 29. November 2006, 21:01

Danke!!!
:-* :-* :-* :-* :-*

funktioniert soweit!!!
Da steht nix :-P

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 6. Dezember 2006, 18:49

So jetzt muss ich leider den Thread nochmal hochholen!

Ich wollte das ganze Script ja als Dienst auf meinem Server laufen lassen.

Den Dienst habe ich auch erfolgreich erstellt allerdings wenn ich diesen starten will bekomme ich folgende Meldung:



Ideen?
Da steht nix :-P

Re: (neue) Datei in Verzeichnis -> automat. FTP

Mittwoch, 6. Dezember 2006, 19:02

funktioniert's denn noch?
das skript wird tatsächlich angehalten und schaut nur alle 10 Sekunden, ob die datei da ist.
windows merkt anscheinend, daß es angehalten wird.
und: kommt diese Meldung nur ein mal oder (wenn man sie wegklickt) alle 10 Sekunden?
Gute work-live-balance ist, wenn man von seinem Privatleben erschöpfter ist als von der Arbeit.