Подключение Windows шары к Raspberry Pi
Возникла необходимость подключить Windows шару к Raspberry, не через графический интерфейс, а через консоль. Проще говоря, Raspberry должна после перезагрузки автоматически подключать шару для записи.
При использовании Ubuntu на Raspberry Pi проблем не возникает, достаточно прописать в /etc/fstab необходимую команду и после перезагрузки всегда будет доступна нужная шара. Но сделать так же в Raspbian без танцев с бубном не получилось.
Ubuntu и Raspberry Pi
И так, если у нас на борту Ubuntu и необходимо монтировать шару после перезагрузки в автоматическом режиме, для этого делаем следующее:
Создаем каталог, куда будет осуществляться монтирование сетевой шары:
1 |
mkdir /home/username/Shared |
Вносим изменения в /etc/fstab:
1 |
//192.168.0.10/Sharename /home/username/Shared cifs user=user,pass=user-password,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm,auto,user 0 0 |
//192.168.0.10/Sharename — путь до шары
/home/username/Shared — наша папка куда будем монтировать шару
user=user — имя пользователя на 192.168.0.10
pass=user-password — пароль от пользователя на 192.168.0.10
auto — нужен для автоматического монтирования шары, иначе нужно будет делать sudo mount -a
После перезагрузки, шара автоматически примонтируется в папку /home/username/Shared. Если перезагружаться не хочется, то можно проверить подключение командой:
1 |
sudo mount -a |
Raspbian и Raspberry Pi
Такие же манипуляции с операционной системой Raspbian к успеху не привели, получается что ключ auto не отрабатывает как нужно. Решение оставалось только одно, использовать /etc/rc.local для примонтирования. Но в ходе теста выяснилось, что проблема остается. Добавление скрипта на bash с монтированием шары в /etc/rc.local тоже не принесло результатов.
В ходе изучения вопроса, на форуме Raspberry был найден ответ, точнее костыль 🙂
Пользователь thagrol предлагает использовать скрипт на Python и запускать его из автозагрузки /etc/rc.local.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#!/usr/bin/env python3 import os, sys, time start_delay = 0 max_retries = 5 retry_delay = 5 mount_command = 'sudo mount -t cifs -o user=XXXX,password=XXXX,rw,file_mode=0777,dir_mode=0777 //192.168.0.10/XXXX /home/pi/Desktop/XXXXX' time.sleep(start_delay) attempts = 0 while attempts <= max_retries and os.system(mount_command) != 0: attempts += 1 time.sleep(retry_delay) if attempts > max_retries: sys.exit('NAS mount failed after %s attempts.' % max_retries) else: print('NAS mount succeded.') |
Скрипт запускается из /etc/rc.local командой:
1 |
/usr/bin/python3 /home/pi/mountshare.py |
В итоге после перезагрузки, скрипт монтирует шару.
3 комментария
petrov.ivan
У меня без ошибки проверилось только так:
sudo mount -t cifs -o username=$windows_user,password=$windows_user_password //WIN_SHARE_IP/$shared_name /mnt/winshare
Изменения в fstab я не вносил.
А почему команду отмонтировать не указали?
sudo umount /mnt/winshare
kanitelka
Вроде как речь шла об монтирование шары.
/etc/fstab