Seite 1 von 2
upload zu Webdav
Verfasst: Donnerstag 31. Mai 2018, 18:11
von egon11
Hallo, ich suche eine einfache Möglichkeit, wie ich eine Dateien zum Webserver (webdav) schicke. Gibt es eine einfache Sache oder muss ich ein extra Modul verwenden?
Re: upload zu Webdav
Verfasst: Donnerstag 31. Mai 2018, 18:41
von sls
Es gibt einen Webdav-Client, womit du via Python Daten an einen Webdav-Server schicken kannst:
https://pypi.org/project/webdavclient/
Re: upload zu Webdav
Verfasst: Donnerstag 31. Mai 2018, 18:58
von egon11
OK danke.
Gibt es auch etwas ohne Modul wie z.b. "url open" oder so wo man das Passwort und Name eingeben kann?
Re: upload zu Webdav
Verfasst: Donnerstag 31. Mai 2018, 19:16
von sls
Ich kann mir vorstellen dass das Verwenden der Python-Webdav-Lib den Up/Download auf Webdav-Elemente deutlich entspannter gestaltet, als bspw. über Requests eine Anfrage zusammen zu schrauben. Ich sehe auch den Vorteil nicht, warum man es ohne Webdav-Lib machen sollte, da du so oder so eine zusätzliche Lib verwendest. Oder geht es dir um den Lerneffekt?
Webdav arbeitet auf der Anwendungsschicht und verwendet wie normale Webserver auch HTTP Port 80, also alles keine Magie.
Re: upload zu Webdav
Verfasst: Donnerstag 31. Mai 2018, 20:20
von egon11
Es geht mir auch über den Lerneffekt.
Webdav arbeitet auf der Anwendungsschicht und verwendet wie normale Webserver auch HTTP Port 80, also alles keine Magie
Mein Webdav hat aber einen anderen Port, aber sollte ja kein Problem darstellen.
Re: upload zu Webdav
Verfasst: Donnerstag 31. Mai 2018, 21:04
von __deets__
Wenn du lernen willst, geht das auch nur mit urllib. Aber dann wirst du VIEL lernen müssen. Mehr als du dir glaube ich vorstellst. Benutz lieber die Bibliothek.
Re: upload zu Webdav
Verfasst: Samstag 2. Juni 2018, 09:13
von egon11
So ich hab es jetzt auf meinen Ubuntu 16.04 PC getestet. Webdav Verzeichnis ist in "/var/www/webdav" und auch über"http:// localhost erreichbar
ich hab eine Datei und einen Ordner (namens "prob") drin mit Gruppe und Benutzer "www-data.
bei client.check("prob") bekomme ich True und bei client.check("probe") False. Also funktioniert es schon mal grundsätzlich.
Jetzt möchte ich aber etwas uploaden von meinen Rechner zu Webdav. Der Pfad ist auf den Rechner in /home/matze/run.py.
Hier mein code:
Code: Alles auswählen
client.upload_sync(remote_path="run.py", local_path="/home/matze/run.py")
Aber die Datei wird leider nicht hochgeladen,da brauch ich leider nochmal eure Hilfe.
Re: upload zu Webdav
Verfasst: Samstag 2. Juni 2018, 09:25
von __deets__
Was sagt das Apache Logfile?
Re: upload zu Webdav
Verfasst: Samstag 2. Juni 2018, 10:57
von egon11
]Das sagt das:
Code: Alles auswählen
- - [02/Jun/2018:11:55:29 +0200] "PUT /run.py HTTP/1.1" 405 533 "-" "PycURL/7.43.0 libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3"
Re: upload zu Webdav
Verfasst: Samstag 2. Juni 2018, 11:15
von __deets__
Laut HTTP error Code 405 ist das halt nicht erlaubt. Da musst du deine Server entsprechend aufsetzen.
Re: upload zu Webdav
Verfasst: Samstag 2. Juni 2018, 11:21
von egon11
Ich hab das ganze ohne username und Passwort (nur zum testen) eingerichtet, kann das damit was zu tun haben?
Re: upload zu Webdav
Verfasst: Samstag 2. Juni 2018, 13:07
von __deets__
Ja.
Re: upload zu Webdav
Verfasst: Samstag 2. Juni 2018, 15:58
von egon11
Genau das war der Fehler, man MUSS ein Benutzername und Passwort vergeben.
Sonst hat man keine Rechte da etwas zu verändern mit den Script.
Danke .
Re: upload zu Webdav
Verfasst: Samstag 2. Juni 2018, 16:47
von egon11
Jetzt hängt es noch am ssl. Ich hab mir selbst ein ssl Protokoll erstellt, aber ich komme einfach nicht zum connect.
Habe schon alle 3 Varianten versucht die in der Docu stehen.
Über mein Browser klappt dass: https://mydyndns.net:port
Re: upload zu Webdav
Verfasst: Samstag 2. Juni 2018, 19:00
von Sirius3
Welche drei Varianten gibt es denn? Und was ist die Fehlermeldung?
Re: upload zu Webdav
Verfasst: Sonntag 3. Juni 2018, 16:36
von egon11
Ich habe die 3 Options
https://pypi.org/project/webdavclient/ Versucht.
Beim 3. hab ich meine Adresse (https://meinedynds.net:port) eingegeben und bei "cert_path" und "key_path" die Pfade eingegeben, die auch in meiner apache2 ssl.conf eingetragen sind.
Als Fehler wird mir das ausgegeben:
Code: Alles auswählen
raise NotConnection(self.webdav.hostname)
webdav.exceptions.NotConnection: Not connection with https://meinserver.net:port
Re: upload zu Webdav
Verfasst: Montag 4. Juni 2018, 05:20
von Sirius3
Leider ersetzt webdavclient alle Fehlermeldungen durch ziemlich unsinnvolle. Was meldet es denn, wenn Du beim Client verbose=True setzt?
Re: upload zu Webdav
Verfasst: Montag 4. Juni 2018, 08:20
von egon11
Sirius3 hat geschrieben: ↑Montag 4. Juni 2018, 05:20
Was meldet es denn, wenn Du beim Client verbose=True setzt?
Was meinst du damit genau?
Re: upload zu Webdav
Verfasst: Montag 4. Juni 2018, 08:32
von Sirius3
genau das, was ich geschrieben habe. Die Ausgaben sind zu dürftig, um irgendwelche Feherursachen zu finden, daher mehr Ausgabe durch verbose, in der Hoffnung, dass man damit auf den Grund kommt.
Re: upload zu Webdav
Verfasst: Montag 4. Juni 2018, 17:11
von egon11
Sorry, aber ich muss nochmal fragen, wo soll ich "verbose=True" setzen?
So sieht mein aktuelles Script aus:
Code: Alles auswählen
import webdav.client as wc
options = {'webdav_hostname': "https://meinedyndns.net:Port",'webdav_login': "xxxx", 'webdav_password': "xxxxx",
'cert_path': "/etc/ssl/certs/apache.crt",'key_path': "/etc/ssl/private/apache.key"}
client = wc.Client(options)
a = client.check("prob/")
print(a)
Bei xxx sind natürlich die richtigen Werte gesetzt.