Загрузка файлов из nextcloud со скриптом python с включенной двухфакторной аутентификацией - PullRequest
0 голосов
/ 30 марта 2020

Я настроил экземпляр nextcloud и хотел бы загружать файлы оттуда, используя скрипт python. Мой экземпляр nextcloud обеспечивает двухфакторную аутентификацию для всех пользователей, и я хочу, чтобы она оставалась такой.

Мой сценарий мечты - использовать библиотеку requests, поэтому, следуя документам здесь https://docs.nextcloud.com/server/15/developer_manual/client_apis/WebDAV/basic.html, я попытался сделать что-то вроде этого:

from requests.auth import HTTPBasicAuth

r = requests.request(
    method='get',
    url='https://mycloudinstance/index.php/apps/files/?dir=/Test&fileid=431',
    auth=('username', 'pass')
)
print(r.status_code)
print(r.text)

Это дает мне ошибку 401, говорящую {"message": "Текущий пользователь не вошел в систему"}.

Когда я изменяю вышеуказанный URL-адрес на https://remote.php/dav/myinstance/index.php/apps/files/?dir= / Test & fileid = 431 Я получаю

ConnectionError (': не удалось установить sh новое соединение : [Errno 8] nodename или servname предоставлены или неизвестны '))

В качестве альтернативы я пытался использовать попытку использовать эту библиотеку https://github.com/owncloud/pyocclient просто чтобы увидеть если я могу создать тестовую папку с ней (она принадлежит owncloud, но должна работать и с nextcloud):

import owncloud
oc = owncloud.Client('https://mycloudinstance')
oc.login('username', 'pass')
oc.mkdir('cooldir')

Это приводит к ошибке owncloud.owncloud.HTTPResponseError: HTTP error: 401. Я думаю, что это может быть либо потому, что я просто использую его неправильно, либо из-за двухфакторной аутентификации.

Я не уверен, как использовать протокол webdav в сочетании с библиотекой запросов python, а также я не уверен, как получить двухфакторную авторизацию для работы с ней. Кто-нибудь когда-нибудь делал это?

Помощь очень ценится, заранее большое спасибо.

1 Ответ

1 голос
/ 30 марта 2020

Вы можете обойти двухфакторную аутентификацию, сгенерировав безопасный пароль для одного приложения.

В следующем облаке, go to: Настройки -> Личные -> Безопасность -> Создать новый пароль приложения

Пароль будет показан вам один раз (и только один раз), используйте его вместо вашего обычного пароля в вашем скрипте.

...