Jump to content
zyxmon

Монтируем (подключаем) Yandex диск в локальную папку

Recommended Posts

Эта тема основана на темах http://forum.zyxmon.org/topic249-podkly ... etiku.html и http://forums.zyxmon.org/viewtopic.php?f=5&t=33 и учитывает специфику кинетиков с прошивкой ndmsv2.

Что необходимо для того, чтобы смонтировать яндекс диск как папку.

1. Кинетик с прошивкой от 02.07.2016 или более поздней в которой есть файл (симлинк) /etc/mtab

ls -l /etc
lrwxrwxrwx    1 root     root             7 Jul  2 08:29 TZ -> /var/TZ
.....
lrwxrwxrwx    1 root     root            12 Jul  2 08:29 mtab -> /proc/mounts
 

2. Установленная система пакетов Entware-keenetic - viewtopic.php?f=4&t=333

3. Установленный модуль ядра fuse - viewtopic.php?f=3&t=471

fuse.png

Share this post


Link to post
Share on other sites

Автоматизируем монтирование

Чтобы каждый раз не вводить логин и пароль, создадим файл /opt/etc/davfs2/yandex

В файл добавим 3 строки. 1-я логин, 2-я пароль, 3-я буква y. Файл должен заканчиваться символом конца строки и иметь UNIX окончания строк. Создавайте и редактируйте его прямо на роутере.

Создадим исполняемый скрипт запуска, для тестирования сначала в домашней папке

touch S99ya_disk
chmod +x S99ya_disk

Содержимое файла

#!/opt/bin/sh

PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

chmod 644 /dev/urandom
chmod 644 /dev/random
chmod 644 /dev/ptmx
chmod 666 /dev/null

MOUNTPOINT=/opt/ya


case "$1" in
   start)
       mkdir -p $MOUNTPOINT
       mount -t davfs https://webdav.yandex.ru $MOUNTPOINT -o rw < /opt/etc/davfs2/yandex >/dev/null
       ;;
   stop)
       if ( (mount | grep -q yandex) ); then
           umount $MOUNTPOINT
       fi
       ;;
   restart)
       stop
       sleep 1
       start
       ;;
   *)
       echo "Usage: $0 {start|stop|restart}"
       ;;
esac

Проверим скрипт. Команда `./S99ya_disk start` должна монтировать yandex, а команда `./S99ya_disk stop` должна его размонтировать.

Если все работает и Вам нужно монтировать yandex диск при старте кинетика, скопируйте этот файл в папку /opt/etc/init.d

Внимание!!! Скрипт может запуститься когда еще нет соединения с интернетом, или не прошла полная инициализация маршрутизатора. В этом случа он не проработает. Чтобы этого не случилось, добавьте перед строкой mount в функции start строку `sleep nnn` (nnn - число секунд, например `sleep 10`). Это добавит паузу перед монтированием. Величину паузы подберите экспериментально.

  • Thanks 2
  • Upvote 1

Share this post


Link to post
Share on other sites

Помогите люди добрые

да действительно все работает на ура , но только если файлы или папки создавать прямо в МС кинетика,а вот проводник с виндовс или клиент FTP живет на своей волне

Share this post


Link to post
Share on other sites

Все красиво работает .. только я бы дополнил маленько скрип запуска вот так

case "$1" in

   start)

       mkdir -p $MOUNTPOINT

     

       if [ -f /opt/var/run/mount.davfs/opt-ya.pid ]; then

         rm /opt/var/run/mount.davfs/opt-ya.pid

       fi

      

   

 

Иначе при использовании оригинала скрипа из первого поста при "случайном" пропадании электричества .. после перегрузки роутера yandex.disk монтроваться не будет .... 

Edited by Dorik1972
  • Thanks 2

Share this post


Link to post
Share on other sites

Смонтированный диск "занимает" место на физических носителях роутера? ну там кеши какие нибудь?

монтировал в винде яндекс диск и отображалось что свободного места ровно столько сколько на диске С у меня.

Share this post


Link to post
Share on other sites
11 час назад, Илларион сказал:

монтировал в винде яндекс диск

Неужели с помощью davfs2. Изучите параметры davfs и в особенности cache_size

  • Thanks 1

Share this post


Link to post
Share on other sites

подскажите, а можно как-нибудь обойти отсутствие линка mtab -> /proc/mounts

Share this post


Link to post
Share on other sites
8 часов назад, serguei00 сказал:

а можно как-нибудь обойти

Через `mount -o bind ....` любую папку RO можно сделать RW. Дальнейшее обсуждение выходит за рамки этого топика!

Share this post


Link to post
Share on other sites

к сожалению столкнулся с проблемой, если подкиньте идеи, буду очень признателен.
Мой роутер Zyxel Keenetic Giga2 в него воткнул 2ТВ (nas сигейт), прошивка v2.08(AAFS.0)C2. раздел ext3

1) Установил Entware - установилось
2) модуль ядра - галку поставил
3) создал файлик /opt/etc/davfs2/yandex (через МС) 
=внутри него три строки:
vasayvsays
fakepass
y
=сохранил фаил
4) создал скрипт touch S99ya_disk потом chmod +x S99ya_disk 
5) внутри файла *S99ya_disk внес "#!/opt/bin/sh и т.д." сохранил
6) Запускаю ./S99ya_disk start вылетает:

Usage: ./S99ya_disk {start|stop|restart}
~ # ./S99ya_disk start
mount.davfs: Mounting failed.
Could not authenticate to server: rejected Basic challenge
mount: mounting https://webdav.yandex.ru on /opt/ya failed: No such device
~ # 

неудается смонтировать

Share this post


Link to post
Share on other sites

После установки проверить davfs2.conf и подправить при необходимости

 cache_dir       /opt/var/cache/davfs2 # system wide cache

файл secrets

/opt/home/yandex userххххх passwdхххххх

создать файл с любым именем в котором одна буква - dav.inp

y

/opt/etc/davfs2 # ls -l
drwxr-xr-x    3 root     root          1024 Jun  9 15:16 certs
-rw-r--r--    1 root     root             2 Nov 16  2012 dav.inp
-rw------    1 root     root          2295 Jul  7  2016 davfs2.conf
-rw-------    1 root     root            33 Jun  9 15:23 secrets
/opt/etc/davfs2 #

создать каталог куда монтировать например /opt/home/yandex

/opt/home # ls -l
...
drwxr-xr-x    3 root     root            72 Apr  5  2012 yandex
/opt/home # 

проверить на запуск

mount -t davfs https://webdav.yandex.ru /opt/home/yandex -o rw < /opt/etc/davfs2/dav.inp

Скрытый текст

/opt/etc # mount -t davfs https://webdav.yandex.ru /opt/home/yandex -o rw < /opt/etc/davfs2/dav.inp
mount.davfs: the server certificate is not trusted
  issuer:      Yandex Certification Authority, Yandex LLC, RU
  subject:     Russian Federation, Moscow, ITO, Yandex LLC, RU
  identity:    *.disk.yandex.net
  fingerprint: e1:a6:16:2d:40:хх:хх:хх:хх:хх:хх:хх:хх:хх:хх:хх:хх:хх:хх:da
You only should accept this certificate, if you can
verify the fingerprint! The server might be faked
or there might be a man-in-the-middle-attack.
Accept certificate for this session? [y,N] /opt/etc #

/opt/etc #  df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                   13312     13312         0 100% /
/dev/root                13312     13312         0 100% /
tmpfs                    63112         0     63112   0% /dev
tmpfs                    63112       168     62944   0% /tmp
/dev/mtdblock/7            960       196       764  20% /storage
...

/dev/sda2               928987     39921    839505   5% /opt https://webdav.yandex.ru
                      10485756        20  10485736   0% /opt/home/yandex

/opt/etc # mount
...

/dev/sda2 on /opt type ext4 (rw,relatime,data=ordered)
https://webdav.yandex.ru on /opt/home/yandex type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,max_read=16384)
/opt/etc #

 

 

Edited by vasek00
  • Thanks 1

Share this post


Link to post
Share on other sites
7 минут назад, vasek00 сказал:

создать файл с любым именем в котором одна буква - dav.inp

y

Апплет yes не годится?

yes | mount -t davfs https://webdav.yandex.ru /opt/home/yandex -o rw

 

Share this post


Link to post
Share on other sites
9 минут назад, Александр Рыжов сказал:

Апплет yes не годится?


yes | mount -t davfs https://webdav.yandex.ru /opt/home/yandex -o rw

 

в посте выше все работает и диск есть и служба весит

21534 nobody    7364 S    mount.davfs https://webdav.yandex.ru /opt/home/yandex

/opt/etc/davfs2 # cat dav.inp
y
/opt/etc/davfs2 # 

/opt/home/yandex # ls -l
-rw-r--r--    1 root     root         57450 Jun  9 15:17 davfs2_1.5.4-2_mipsel-3x.ipk
-rw-r--r--    1 root     root       4004779 May 29 12:36 iperf3cygwingui-3.0b4-03.zip
drwx------    2 root     root             0 Jun  9 15:24 lost+found
-rw-r--r--    1 root     root       5918723 Jun  1 15:15 syncthing-linux-mips-v0.14.29.tar.gz
-rw-r--r--    1 root     root       6066706 Jun  1 15:15 syncthing-windows-386-v0.14.29.zip
/opt/home/yandex # 

 

Edited by vasek00

Share this post


Link to post
Share on other sites
13 минуты назад, vasek00 сказал:

в посте выше все работает и диск есть и служба весит

«У меня всё работает» — плохой аргумент. Сами ведь понимаете, что dav.inp — это откровенный костыль, которому есть нормальная замена.

Share this post


Link to post
Share on other sites
16 минут назад, Александр Рыжов сказал:

«У меня всё работает» — плохой аргумент. Сами ведь понимаете, что dav.inp — это откровенный костыль, которому есть нормальная замена.

принято

/opt/var/run/mount.davfs # yes | mount -t davfs https://webdav.yandex.ru /opt/home/yandex -o rw
mount.davfs: the server certificate is not trusted
  issuer:      Yandex Certification Authority, Yandex LLC, RU
  subject:     Russian Federation, Moscow, ITO, Yandex LLC, RU
  identity:    *.disk.yandex.net
  fingerprint: e1:a6:........:da
You only should accept this certificate, if you can
verify the fingerprint! The server might be faked
or there might be a man-in-the-middle-attack.
Accept certificate for this session? [y,N] yes: Broken pipe
/opt/var/run/mount.davfs # 
/opt/var/run/mount.davfs # df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                   13312     13312         0 100% /
.....
/dev/sda2               928987     55688    823738   6% /opt
https://webdav.yandex.ru
                      10485756     15784  10469972   0% /opt/home/yandex
/opt/var/run/mount.davfs #

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Все сделал но, увы опять

~ # mount -t davfs https://webdav.yandex.ru /opt/home/yandex -o rw < /opt/etc/davfs2/dav.inp
mount.davfs: Mounting failed.
Could not authenticate to server: rejected Basic challenge
mount: mounting https://webdav.yandex.ru on /opt/home/yandex failed: No such device


~ # yes | mount -t davfs https://webdav.yandex.ru /opt/home/yandex -o rw
mount.davfs: Mounting failed.
Could not authenticate to server: rejected Basic challenge
mount: mounting https://webdav.yandex.ru on /opt/home/yandex failed: No such device

root@Keenetic_Giga:/opt/etc/davfs2# ls -l
drwxr-xr-x    3 root     root          4096 Jun  8 23:58 certs
-rw-r--r--    1 root     root             1 Jun  9 16:42 dav.inp
-rw-------    1 root     root          2311 Jun  9 16:40 davfs2.conf
-rw-------    1 root     root          2684 Jun  9 16:38 secrets

root@Keenetic_Giga:/opt/home# ls -l
-rwxr-xr-x    1 root     root          1565 Jun  9 10:17 S99ya_disk
drwxr-xr-x    2 root     root          4096 Jun  9 15:50 yandex

Edited by necfe

Share this post


Link to post
Share on other sites
32 минуты назад, vasek00 сказал:

 


or there might be a man-in-the-middle-attack.
Accept certificate for this session? [y,N] yes: Broken pipe

 

Фигово. Должно быть:

or there might be a man-in-the-middle-attack.
Accept certificate for this session? [y,N] ~ #

Какая прошивка/девайс? Проверил и в интерактивном сеансе на GIII с последней бетой и Entware-3x.

 

 

Share this post


Link to post
Share on other sites

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

$ wget -O - http://certificate.fyicenter.com/Download-Certificate.php?ID=329 > /opt/etc/davfs2/certs/Certum_Trusted_Network_CA.crt
$ echo 'servercert /opt/etc/davfs2/certs/Certum_Trusted_Network_CA.crt' >> /opt/etc/davfs2/davfs2.conf

Теперь не понадобится ни костыльный файл, ни апплет yes.

  • Thanks 1

Share this post


Link to post
Share on other sites
15 часов назад, Александр Рыжов сказал:

Фигово. Должно быть:


or there might be a man-in-the-middle-attack.
Accept certificate for this session? [y,N] ~ #

Какая прошивка/девайс? Проверил и в интерактивном сеансе на GIII с последней бетой и Entware-3x.

 

 

KII на последней 209B с Entware3

Share this post


Link to post
Share on other sites
16 часов назад, necfe сказал:

Все сделал но, увы опять

~ # mount -t davfs https://webdav.yandex.ru /opt/home/yandex -o rw < /opt/etc/davfs2/dav.inp
mount.davfs: Mounting failed.
Could not authenticate to server: rejected Basic challenge
mount: mounting https://webdav.yandex.ru on /opt/home/yandex failed: No such device


~ # yes | mount -t davfs https://webdav.yandex.ru /opt/home/yandex -o rw
mount.davfs: Mounting failed.
Could not authenticate to server: rejected Basic challenge
mount: mounting https://webdav.yandex.ru on /opt/home/yandex failed: No such device

root@Keenetic_Giga:/opt/etc/davfs2# ls -l
drwxr-xr-x    3 root     root          4096 Jun  8 23:58 certs
-rw-r--r--    1 root     root             1 Jun  9 16:42 dav.inp
-rw-------    1 root     root          2311 Jun  9 16:40 davfs2.conf
-rw-------    1 root     root          2684 Jun  9 16:38 secrets

root@Keenetic_Giga:/opt/home# ls -l
-rwxr-xr-x    1 root     root          1565 Jun  9 10:17 S99ya_disk
drwxr-xr-x    2 root     root          4096 Jun  9 15:50 yandex

И каталог монтирования конечно на месте?

Share this post


Link to post
Share on other sites

Device                  Start                End         Sectors        Size Type
/dev/sda1                  34          2074713       2074680        1013M Linux swap
/dev/sda2          2074714     1471836135    1469761422    700,9G Linux filesystem
/dev/sda3      1471836136    3907029133    2435192998        1,1T Microsoft basic data
хочу смонтировать на /dev/sda2

# mount -t davfs https://webdav.yandex.ru /dev/sda2/opt/ya/ 
mount.davfs: can't evaluate path of mount point (null)
mount: mounting https://webdav.yandex.ru on /dev/sda2/opt/ya/ failed: Not a directory

/etc # df -h
Filesystem                Size      Used    Available Use%                     Mounted on
rootfs                   10.1M     10.1M         0 100%                          /
/dev/root                10.1M     10.1M         0 100%                         /
tmpfs                   125.1M         0    125.1M   0%                         /dev
tmpfs                   125.1M     92.0K    125.0M   0%                     /tmp
/dev/mtdblock/7         960.0K    196.0K    764.0K  20%               /storage
/dev/sda1               997.1M    961.0M         0 100%                   /tmp/mnt/SWAP
/dev/sda2               688.9G     29.8M    653.8G   0%                 /tmp/mnt/OpenWRT
/dev/sda3                 1.1T     84.6G      1.1T   7%                     /tmp/mnt/Files
/dev/sda2               688.9G     29.8M    653.8G   0%                 /opt

Я не могу смонтировать =(

 

Edited by necfe

Share this post


Link to post
Share on other sites
В 11.06.2017 в 13:27, necfe сказал:

mount -t davfs https://webdav.yandex.ru /dev/sda2/opt/ya/ 

не-не-не!

mount -t davfs https://webdav.yandex.ru /opt/ya/ 
20 минут назад, necfe сказал:

есесено за ..

Если помогло, то переведите любую сумму на https://donate.podari-zhizn.ru/

Share this post


Link to post
Share on other sites
Только что, necfe сказал:

безусловно так тоже пробывал

Явно жалуется на корявость учётных данных:

Цитата

Could not authenticate to server: rejected Basic challenge

 

Share this post


Link to post
Share on other sites

Проблема действительно была в Яндексе,  необходимо зайти в настройки яндекс паспорт и выбрать "СОЗДАТЬ ПАРОЛЬ ПРИЛОЖЕНИЯ" та выбрать "Файлы Webdav", далее вылетит окошко с пассом, его и надо вводить. Мой тот что штатный почему-то не принимает...

  • Thanks 1

Share this post


Link to post
Share on other sites

Ребят, не пинайте не грамотного! В ручную подключаюсь к диску, а вот в автомате пока так и не понял как сделать, чтобы не вписывать имя и пароль и потом еще ответить yes.

Подскажите еще раз пожалуйста!

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

И еще вопрос: хочу это примонтированный раздел прицепить к разделу на сетевом хранилище (WD), делаю из WD, а там пишет - is not a valid block device.

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

Edited by el matador

Share this post


Link to post
Share on other sites

У меня все подмантировалось успешно, за исключением одного НО. Вот как я делал:

Сначала идет в настройки учетной записи в Яндексе и получаем там пароль приложения для WebDav, именно его и будет использовать

opkg install davfs2
touch S99ya_disk
chmod +x S99ya_disk
wget -O - http://certificate.fyicenter.com/Download-Certificate.php?ID=329 > /opt/etc/davfs2/certs/Certum_Trusted_Network_CA.crt
echo 'servercert /opt/etc/davfs2/certs/Certum_Trusted_Network_CA.crt' >> /opt/etc/davfs2/davfs2.conf
echo '/opt/home/yandex username password' >> /opt/etc/davfs2/secrets
chmod 0600 /opt/etc/davfs2/secrets
vi S99ya_disk

Тут опять же редактируем точку монтирования в /opt/home/yandex

Получается примерно вот так

#!/opt/bin/sh

PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

chmod 644 /dev/urandom
chmod 644 /dev/random
chmod 644 /dev/ptmx
chmod 666 /dev/null

MOUNTPOINT=/opt/home/yandex

case "$1" in
   start)
       mkdir -p $MOUNTPOINT
       if [ -f /opt/var/run/mount.davfs/opt-home-yandex.pid ]; then
         rm /opt/var/run/mount.davfs/opt-home-yandex.pid
       fi
      mount -t davfs https://webdav.yandex.ru $MOUNTPOINT -o rw
       ;;
   stop)
       if ( (mount | grep -q yandex) ); then
           umount $MOUNTPOINT
       fi
       ;;
   restart)
       stop
       sleep 1
       start
       ;;
   *)
       echo "Usage: $0 {start|stop|restart}"
       ;;
esac

Запускаем, проверяем.

~ # ./S99ya_disk start
~ # df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                   14080     14080         0 100% /
...
https://webdav.yandex.ru
                     264241148 127769492 136471656  48% /opt/home/yandex
~ # mount
rootfs on / type rootfs (rw)
...
https://webdav.yandex.ru on /opt/home/yandex type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,max_read=16384)

А вот теперь то самое НО.

На роутере я подключенный диск вижу прекрасно, могу ходить по папкам и прочее, но вот при просмотре через CIFS папка пустая. Почему?

Скрытый текст

image.png.8359924d2ec11cd95fbb75db16ad4065.png

  

Edited by ankar84
  • Thanks 1

Share this post


Link to post
Share on other sites
23 минуты назад, ankar84 сказал:

Сначала идет в настройки учетной записи в Яндексе и получаем там пароль приложения для WebDav, именно его и будет использовать

Это только для тех, кто использует 2FA, верно?

Share this post


Link to post
Share on other sites
29 минут назад, ankar84 сказал:

На роутере я подключенный диск вижу прекрасно, могу ходить по папкам и прочее, но вот при просмотре через CIFS папка пустая. Почему?

Особенность fusefs - но можно поискать флаги монтирования.....

Share this post


Link to post
Share on other sites
1 час назад, Александр Рыжов сказал:

Это только для тех, кто использует 2FA, верно?

Да, в справке сказано именно так, но лично я 2FA не использую и у меня отлично все подмонтировалось с паролем приложения. А для использующих 2FA это, видимо, вообще единственный обходной путь.

Share this post


Link to post
Share on other sites
2 часа назад, zyxmon сказал:

Особенность fusefs - но можно поискать флаги монтирования

Очень жаль. В таком виде не смогу применить, скорее всего.

Хотя странно, ведь allow_other есть, но такое впечатление, что доступно монтирование только root (CIFS у меня под другим пользователем - из прошивки)

https://webdav.yandex.ru on /opt/home/yandex type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,max_read=16384)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...