Пользователь
0,0
рейтинг
12 мая 2013 в 06:30

Разработка → Подключение SkyDrive в Linux из песочницы

SkyDrive&Ubuntu

Доброго времени суток.

Хочу обратить ваше внимание на пару скриптов для работы со SkyDrive в Linux. Скрипты написаны на Python и скорее всего будут работать в любой *NIX системе, и не только *NIX. Первый предоставляет возможность работать с аккаунтом в командной строке, второй, модуль для FUSE, позволяет подключить содержимое SkyDrive к файловой системе. Проект практически нигде не упоминается. Сам я на него наткнулся случайно, после того, как не смог подключить SkyDrive с использованием недокументированного WebDAV. И стал искать другой способ подключения, исходя из предположения, что, раз у SkyDrive есть API, то кто-нибудь должен этим воспользоваться.


Автор Михаил(?) Казанцев не хочет рекламировать проект, поэтому я решил сделать это за него. У меня все работало в Ubuntu 13.04, заработает ли у вас, не знаю. В любом случае альтернатив немного и имеет смысл попробовать.

Установка и настройка python-skydrive


Реализация SkyDrive REST API v5.0 на Python. Скрипт позволяет использовать командную строку для работы с аккаунтом SkyDrive. Проект располагается на GitHub по адресу https://github.com/mk-fg/python-skydrive (зеркало на python.org). Скрипт доступен в каталоге пакетов для Python (PyPI). Автор скрипта рекомендуют для установки использовать pip, воспользуемся его советом:
sudo apt-get install python-pip
sudo pip install 'python-skydrive[standalone]'

Пакет имеет в зависимостях PyYAML, и насколько я понял он должен установиться автоматически, но не установился. Поэтому:
sudo pip install pyyaml
(или так: sudo apt-get install python-yaml)

Создадим в домашнем каталоге файл ~/.lcrc, следующего содержания:
client:
  id: xxxxxxxx
  secret: xxxxxxxxxx

Значения для id и secret нужно получить зарегистрировав приложение в DevCenter. Регистрируем новое приложение, например Python-Skydrive, внизу страницы выбираем мобильное клиентское приложение, сохраняем. Список подключенных приложений можно увидеть тут: https://account.live.com/consent/Manage.

Для доступа к аккаунту используется авторизация по OAuth. Для авторизации выполним в командной строке:
skydrive-cli auth

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

Готово, список доступных команд skydrive-cli --help (Ваш КО).

Подключение SkyDrive к файловой системе


Для этого потребуется еще один скрипт, скачать его можно по адресу https://github.com/mk-fg/skydrive-fuse-fs. Нужно будет скачать skydrivefs и скопировать в каталог для исполняемых файлов (в примере был показан /usr/local/sbin/, я последовал примеру). Помечаем файл исполняемым. Так же потребуется установить модуль fusepy:
sudo pip install fusepy

(или просто скопировать идущий в комплекте fuse.py в тот же каталог, что и skydrivefs)
Проверяем:
sudo mkdir /media/skydrive && sudo skydrivefs /media/skydrive

В подключенных дисках должен появится новый диск skydrive.

Остается автоматизировать процесс подключения, открывает /etc/fstab на редактирование и добавляем:
skydrivefs  /media/skydrive fuse.skydrivefs user,rw,noauto 0 0

После перезагрузки можно будет получить доступ к своему SkyDrive просто кликнув на иконку диска.

Технические подробности, код… доступны по ссылкам. Пытливые умы найдут много способов применить доступ к SkyDrive из командной строки в деле. Остальным же будет удобнее использовать SkyDrive как файловую систему.

Спасибо за внимание, надеюсь это статья будет вам полезна.
Иван Юшкевич @Ivush
карма
5,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (9)

  • –1
    А работа через fuse не тормозит? Как там со скоростью чтения/записи файлов?
    • +3
      Тормозит, но уверен что скорости интернета у большинства не хватит что бы заметить это.
  • +3
    хабраэффект на microsoft?
    Скрытый текст

    • 0
      Есть альтернатива? что бы добавить устройство?
  • +1
    В гайде ошибка:

    1) После sudo mkdir /media/skydrive && sudo skydrivefs /media/skydrive диск появляется, но записать туда что-то нельзя ибо нет прав на запись

    2) mount -t fuse.skydrivefs ~/.lcrc /media/skydrive user,rw,noauto 0 0 вызывает появление диалога с указанием неправильного синтаксиса /etc/fstab

    Xubuntu 13.04
    • 0
      1) Это просто проверить работу, доступ есть под рутом.
      2) Поправил, нужно: skydrivefs /media/skydrive fuse.skydrivefs user,rw,noauto 0 0, или еще вариант /var/lib/skydrive.yaml /mnt/skydrive fuse.skydrivefs user,rw,noauto 0 0, где содержимое skydrive.yaml аналогично .lcrc. У автора везде в примерах проставлена опция defaults, но у меня с ней бук не стартовал, поэтому user,rw,noauto.
  • 0
    Спасибо за статью! Ещё одно облако успешно внедрено для бекапов :)

    Может есть аналогичный мануал для box.com хранилища?
  • 0
    Я так понял, несколько аккаунтов в одной системе (типа, как тут github.com/astrada/google-drive-ocamlfuse) не поддерживается?

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