Автомаунт samba-шар в зависимости от сети

В силу мобильности своей электронно — вычислительной железки (владею ноутбуком Dell Inspiron 1420) приходится втыкаться в разного рода сети. Восновном рабочую и домашнюю. В зависимости от того куда воткнулся — нужно монтировать те или иные сетевые диски. Например на работе сетка 10.0.1.0/24, а дома — 192.168.13.0/24. Адрес и там и там получаю по DHCP. Соответственно и samba-сервера и шары и параметры монтирования совсем уж разные. Привести монтирование сетевых ресурсов к общему знаменателю неполучилось както 🙂 (может нешарю???) В итоге родилась мысль написать некий скриптик который при загрузке будет определять в какой сети я нахожусь и монтировать автоматом шары этой сетки.
Алгоритм примерно такой:

  • Получили адрес: Если это адрес домашней сети -> мотировать домашние samba-диски
  • Если это адрес из рабочей сети -> монтировать рабочие samba-диски
  • Если адрес не получили -> ничего не монтировать!

Задача совсем несложная для тех кто хоть чуток розбирается в bash. Вот что накалякал я:

#!/bin/bash
## // script for avtomount my home samba shares
## // writed by black_13 *31.01.2010*
IM_HOME=`ifconfig eth0 |grep 192.168.13`
IM_WORK=`ifconfig eth0 |grep 10.0.1`
if [[ -z ${IM_HOME} ]]; then
  echo 'Im not home! Nothing to mount from network :)'
else
  mountpoint -q /media/samba || mount.cifs //black/public /media/samba/ -o credentials=/root/.smb
  mountpoint -q /media/privat || mount.cifs //black/private /media/privat/ -o credentials=/root/.smb
fi
if [[ -z ${IM_WORK} ]]; then
  echo 'Im not in Work! Nothing to mount from network :)'
else
  mountpoint -q /media/samba || mount.cifs //server.work/DiskP /media/samba/ -o credentials=/root/.smb_work
  mountpoint -q /media/master || mount.cifs //samba.work/master /media/master/ -o credentials=/root/.smb_work
fi

Авторизационные данныя для доступа к шарам содержатся в файлах /root/.smb и /root/.smb_work для дома и работы соответственно. Формат содержания предельно прост:

laptop ~ # cat /root/.smb
username=home_user
password=my_passw_home
laptop ~ #

Немножко о логике скрипта, хоть все понятно и непосвященным 🙂
Если переменная IM_HOME содержит ip с сетки 192.168.13 — значит я дома и монтируем мои домашние шары. Если же она ничего не содержит — то просто выводим «Im not home! Nothing to mount from network :)» Со вторым случаем тоже самое. Если переменная IM_WORK не пуста — то монтируем диски с работы. Иначе выводим что велено echo.

Для старта этого скриптика при старте системы …. в Gentoo надо в конфиг /etc/conf.d/local.start добавить такое:

laptop ~ # cat /etc/conf.d/local.start
# /etc/conf.d/local.start
# This is a good place to load any misc programs
# on startup (use &>/dev/null to hide output)
### for avtomount samba shares if i'm home or work ###
/root/bin/home_samba_avtomount.sh
laptop ~ #

Ну вот и все 🙂 Теперь если я включаю ноут в домашней сети — получаю подмонтированные домашние сетевые диски. Если же сеть окажется рабочей — получаю примонтированными рабочие самбовые шары. Очень удобно. Кстати повесить срабатывание скрипта лучше на поднятие интерфейса — тоесть по if-up. Такчто если охота — то так и сделайте.
Ну вот и все. Рукам даем свободу от ввода километровых команд, а мозгам отдых и силы на будущие открытия. Наслаждаемся 😉

  1. Комментов пока нет

  1. Трэкбэков пока нет.

Why ask?