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/