red_dragon 26.04.2011 01:46
How-to`s — Монтирование сетевых ресурсов в зависимости от имени точки доступа WI-FI
В последнее время, как и многие наверное, я отдаю предпочтение портативному компьютеру (читай ноутбуку) перед стационарным.Соответственно, таскаю его с собой из дома на работу и обратно. И дома и на работе имеются определённые сетевые ресурсы, в виде каталогов и принтеров, которые время от времени приходится использовать. Тут необходимо отметить, что сетевые каталоги расшарены по NFS, ибо в моём конкретном случае NFS показывает большую скорость обмена данными нежели SMB, но речь не об этом. Просто NFS ресурсы нельзя примонтировать средствами DM, просто найдя их в сетевом окружении. Соответственно, необходимо заранее озаботитися монтированием означенных ресурсов. Мало того, что бы не загромождать каталог монтирования лишними вложенными каталогами, логично монтировать схожие по назначению домашние и рабочие ресурсы в одни и те же каталоги.
Какое-то время я использовал для монтирования ресурсов соответствующие скрипты, которые запускал в ручную, по мере необходимости. Однако такое положение вещей всё меньше меня устраивало. Хотелось, что бы не приходилось задумываться о том смонтирован ли нужный ресурс или нет. Возможностей смонтировать сетевой каталог существует много. Я рассмотрел разные варианты от Automount до собственного демон-скрипта. Однако в итоге нашёл наиболее приемлемое для себя решение.
Как оказалось, NetworkManager при изменении состояния интерфейсов выполняет скрипты, расположенные в каталоге /etc/NetworkManager/dispatcher.d. Туда я и запихал собственный, под именем 11-nfsmount. Имя как выяснилось, большого значения не имеет. Т.е. выполняются абсолютно все скрипты расположенные в означенном каталоге. С этим же свойством связан и подводный камень, на который я наступил. Дело в том, что многие текстовые редакторы любят оставлять бэкапы редактированных файлов. Так вот, в данном случае, необходимо запретить такое поведение, либо удалять созданный бэкап вручную, иначе он будет выполняться наряду с отредактированным скриптом. Кроме монтирования NFS каталогов, я добавил в скрипт выбор принтера по умолчанию для дома и работы соответственно. Мелочь вроде бы, а весьма удобно. Пример скрипта приведён ниже.
Вместо вывода.
Безусловно, это довольно частное решение частной же проблемы. Однако решение интересное и довольно лаконичное, на мой взгляд. Надеюсь кому-нибудь окажется полезным.
З.Ы.: Возможно пост несколько избыточен, однако я старался излагать последовательно, начиная с сути проблемы. Буду рад конструктивной критике/предложениям.
UPD: Как справедливо заметил abyss, существует не нулевая вероятность случайного совпадения ssid "своей" и "чужой" точки доступа. В связи с чем было предложено выполнять проверку соответствия MAC адресов. Руководствуясь этими соображениями, слегка поправил пример скрипта.
UPD1: Для справки. На данный момент, этот скрипт работает на двух ноутбуках под Fedora 14 + KDE 4.6.2.
UPD2: К сожалению, на данный момент нотификация почему то не работает (может это исключительно моя проблема), поэтому на комментарии отвечаю не сразу.
exelens 26.04.2011 11:31 #
+ 4 -
Пост отличный, я только кат добавил
Спасибо. С ходу не разобрался как кат добавить. Теперь понял.
Нормальное решение в плане логики.
Я поступаю похожим образом, только вместо NM использую mapping в interfaces(справедливо для debian).
Я поступаю похожим образом, только вместо NM использую mapping в interfaces(справедливо для debian).
Вот здесь я описывал, как использовать mapping для автоподключения wi-fi. Точно так же и монтирование работает(у меня оно по sshfs идёт).
А что произойдет когда вы придете в гости к другу, у которого такой же ssid = "Home" ? Я намекаю на то что желательно еще mac проверять.
Хотя я в своё время по другому делал, домашний DHCP сервер выдает свой параметр (из неиспользуемой области) А клиент получив такой параметр монтирует ресурсы. Не получив соответственно не монтирует :) Но потом перешел на automount.
Хотя я в своё время по другому делал, домашний DHCP сервер выдает свой параметр (из неиспользуемой области) А клиент получив такой параметр монтирует ресурсы. Не получив соответственно не монтирует :) Но потом перешел на automount.
А что произойдет когда вы придете в гости к другу, у которого такой же ssid = "Home" ? Я намекаю на то что желательно еще mac проверять.
Вот у меня как раз по маку идёт.
Но идея с dhcpd - это круто. Спасибо за наводку.
Да, риск не уникальности ssid конечно есть, однако обычно те кто осиливает сменить название своей точки доступа на отличное от заводского способен проявить фантазию в выборе. "Home" - это просто пример. Тем не менее Ваше замечание весьма резонно, и его надо учитывать.
Использую такой-же скрипт для файлового сервера в общаге, если в общаге то монтирую по локалке, иначе по внешнему IP. Единственное, с чем пока не разбирался - что подмонтировать можно без авторизации.
ssid=`/sbin/iwconfig wlan0 | grep 'ESSID' | awk '{print $4}' | sed -s 's/ESSID://'`
ssid=`/sbin/iwconfig wlan0 | awk '/ESSID/{print $4}' | sed -s 's/ESSID://'`
пользовался подобным скриптом на своей машине, но через некоторое время отключил т.к. время перехода в спящий режим очень значительно выросло. Я так подозреваю это было из-за невозможности отмонтировать ресурс в виду того что какая-то програмулька пользовалась удаленным ресурсом, либо был открыт файл... в результате решил для себя что подмонтировать по необходимости проще чем выяснять почему комп не уходит в сон.
Я так подозреваю это было из-за невозможности отмонтировать ресурс в виду того что какая-то програмулька пользовалась удаленным ресурсом, либо был открыт файл
На удивление, с такой проблемой не столкнулся, хотя и ожидал чего-нибудь подобного.
з.ы.Ж Fedora 14 + KDE 4.6.2
По идее для самбы аналогично. Поэтому будет интересно, если Вы отпишетесь о результатах применения этого метода для монтирования по SMB протоколу.
зачем вообще вручную монтировать если есть autofs которая сама монтирует доступные в данный момент нфс-шары?
естественно читал, но из всего скрипта можно оставить только часть с переключением принтеров(к сожалению не сталкивался, возможно и она не нужна). NFS в автофс почти не уступает самбе по удобству доступа, достаточно прописать в/etc/hosts айпишки nfs-серверов и раскоментить одну строку в конфиге(/net -hosts,добавив параметр --ghost). после этого доступные шары будут автоматом создаватся в файловой системе(/net/servername/sharetree), а недоступные удалятся.
Если не ошибаюсь сделано оно за счет команды showmount -e serverip
Если не ошибаюсь сделано оно за счет команды showmount -e serverip
Расскажите пожалуйста, как посредством autofs смонтировать два разных сетевых ресурса Server1:/volume1/public и Server2:/home/shared в каталог /media/shared ноутбука, в зависимости от того к какой локальной сети он подключен.
хорошо, чтобы не быть голословным я на днях дома смоделирую ситуацию и проверю как себя поведет автофс при монтировании разных серверов в одну папку.
Тотже способ который я описал выше автоматом примонтирует папки так:
/net/homeserver/exports
/net/workserver/exports
где homeserver/workserver имена серверов которые вы вписали себе в /etc/hosts, а exports путь к доступной шаре. Монтироватся будет только то что в данный момент доступно, тоесть как положено доманий сервер - дома, рабочий - на работе. ну а чтобы не лазить каждый раз в фс, вы конечно можете создать закладки или симлинки. Также можно указать таймаут по которому шары будут отмонтироватся если ими не пользуются, но они будут примонтированы сразуже как только вы попытаетесь зайти в "шару".
В итоге доступ к расшаренным данным прост, а запускать скрипт каждый раз не нужно.
Тотже способ который я описал выше автоматом примонтирует папки так:
/net/homeserver/exports
/net/workserver/exports
где homeserver/workserver имена серверов которые вы вписали себе в /etc/hosts, а exports путь к доступной шаре. Монтироватся будет только то что в данный момент доступно, тоесть как положено доманий сервер - дома, рабочий - на работе. ну а чтобы не лазить каждый раз в фс, вы конечно можете создать закладки или симлинки. Также можно указать таймаут по которому шары будут отмонтироватся если ими не пользуются, но они будут примонтированы сразуже как только вы попытаетесь зайти в "шару".
В итоге доступ к расшаренным данным прост, а запускать скрипт каждый раз не нужно.