Webdavをubuntuから使う
WebdavにアップされるファイルをUbuntuでダウンロードしたい
最初にやろうとしたこと
アップロードされてくるファイルを、pythonで自動ダウンロードしたい。
webdav client
こんな感じでいけるかと思ったが、どうにも上手くいかない
結果的にダイジェスト認証に対応していないことが問題っぽい
import webdav.client as wc options = { 'webdav_hostnema': "https://hostname/path", 'webdav_login': "user", 'webdav_password': "password", 'verbose': True } client = wc.Client(options) client.list()
cadaver
インタラクティブに接続できる。
これとexpectとか組み合わせればなんとかなりそうだが、あまりスマートではない
# cadaver https://hostname/path Authentication required for hostname on server Username: user Password: dav:/path/>
requests
それっぽく動く。この辺でDigest認証がないと動かないことがわかった。
import requests from requests.auth import HTTPDigestAuth url = 'https://hostname/path/file' requests.get(url,auth=HTTPDigestAuth('user','password'))
curl
# curl --user 'user:pass' https://hostname/path --digest # curl -X PROPFIND --user 'user:pass' https://hostname/path --digest
tinydav
ダイジェスト認証に対応していないようだ
tinydav 0.7.5 : Python Package Index
別の方法(NFS)の状況を確認する
davfs2
普通にマウントできる。
# sudo mount -t davfs -o uid=$UID,gid=$(id -g) https://hostname/path /mnt/dav Please enter the username to authenticate with server https://hostname/path or hit enter for none Username: user Please enter the password to authenticate with server https://hostname/path or hit enter for none Password: /sbin/mount.davfs: https://hostname/path on /home/sbin/