Как использовать учетные данные Cyberduck для доступа к WebDAV с помощью Python

Я никогда раньше не использовал WebDav, но я загрузил Cyberduck и использовал его для подключения к внутреннему рабочему диску и загрузки всего каталога на свой рабочий стол. Однако по причинам, которые я пока не могу определить, я сталкиваюсь со случайными ошибками, когда некоторые файлы не загружаются. Я считаю, что это связано с сетью, а не с Cyberduck.

Проблема, с которой я столкнулся, заключается в том, что Cyberduck не ведет учет ошибок и, похоже, не имеет надежной обработки ошибок и исключений.

Я хотел бы запустить тот же процесс с помощью программы на Python, чтобы я мог записывать ошибки.

Однако библиотеки, которые я пробовал, не могу подключиться. Я уверен, что проблема в ошибке пользователя.

Я пробовал easywebdav и _ 2_, но я не могу воспроизвести соединение.

Для easywebdav я попытался имитировать информацию, вводимую для Cyberduck (см. Изображение ниже), вот так:

import easywebdav

webdav = easywebdav.connect(host='drive.corp.amazon.com', 
                            username='username', 
                            port=443, 
                            protocol='https', 
                            password='password')

print(webdav.ls())

Но это не работает.

И я попытался изменить аргумент host на https://[email protected]/mnt/..., но и там не повезло. Есть идеи, что я делаю не так?

Cyberduck Entry


person Hofbr    schedule 27.07.2020    source источник


Ответы (1)


Кажется, что Cyberduck настроен на использование проверки подлинности NTLM, но запросы по умолчанию используют обычную проверку подлинности.

Для подключения к серверу WebDAV с аутентификацией NTLM вы можете использовать стороннюю библиотеку, которая ее реализует, например requests-ntlm < / а>:

from webdav3.client import Client
from requests_ntlm import HttpNtlmAuth

options = {
 'webdav_hostname': "https://webdav.server.ru"
}

client = Client(options)
# Configure authentication method 
client.session.auth = HttpNtlmAuth('domain\\username','password')
person Evgeny Ezhov    schedule 29.07.2020
comment
Спасибо Евгению. Очень признателен инженеру, стоящему за webdav3, за его взвешивание. Я попробовал решение, рекомендованное выше, но все равно получаю сообщение об ошибке. webdav3.exceptions.NoConnection: Нет связи с drive.corp.amazon.com Это может быть глупый вопрос , а что я должен вводить в домене \\ имя пользователя? Могу ли я заменить строку домена фактическим доменом? Скажите в этом случае drive.corp.amazon.com? - person Hofbr; 29.07.2020
comment
Я думаю, что для обычного человека, испытывающего подобную проблему, это сработает. Я использовал ваш requests_ntlm в других решениях на своем рабочем месте, и он хорошо работал там, где не работает обычная аутентификация. Их не кажется очевидным решением проблемы, с которой я столкнулся, на уровне Python. Что-то во внутреннем рабочем приложении, которое я использую, просто вызывает множество проблем. - person Hofbr; 24.08.2020