upload zu Webdav
- sls
- User
- Beiträge: 480
- Registriert: Mittwoch 13. Mai 2015, 23:52
- Wohnort: Country country = new Zealand();
Es gibt einen Webdav-Client, womit du via Python Daten an einen Webdav-Server schicken kannst: https://pypi.org/project/webdavclient/
When we say computer, we mean the electronic computer.
- sls
- User
- Beiträge: 480
- Registriert: Mittwoch 13. Mai 2015, 23:52
- Wohnort: Country country = new Zealand();
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.
Webdav arbeitet auf der Anwendungsschicht und verwendet wie normale Webserver auch HTTP Port 80, also alles keine Magie.
When we say computer, we mean the electronic computer.
Es geht mir auch über den Lerneffekt.
Mein Webdav hat aber einen anderen Port, aber sollte ja kein Problem darstellen.Webdav arbeitet auf der Anwendungsschicht und verwendet wie normale Webserver auch HTTP Port 80, also alles keine Magie
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:
Aber die Datei wird leider nicht hochgeladen,da brauch ich leider nochmal eure Hilfe.
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")
]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"
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
Habe schon alle 3 Varianten versucht die in der Docu stehen.
Über mein Browser klappt dass: https://mydyndns.net:port
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:
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
Sorry, aber ich muss nochmal fragen, wo soll ich "verbose=True" setzen?
So sieht mein aktuelles Script aus:
Bei xxx sind natürlich die richtigen Werte gesetzt.
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)