Есть у меня сетевое хранилище Thecus N299. Из путей доступа к нему есть протоколы SMB, NFS, FTP и web-интерфейс через HTTP. Так как я пользуюсь, чаще всего, ОС Linux, то протокол SMB является чужеродным и дико тормозящим, но зато он поддерживается любым файловым менеджером. Монтировать каталоги по NFS было очень лениво, поэтому я пользовался, в основном, SMB в ущерб скорости. Надо ли говорить, что работать с файлами через SMB напрямую не умеют почти все программы UNIX. Конечно же, решением (через одно место) могло бы быть монтирование через smbfs, но тут я вспомнил о NFS.
Писать постоянно что-то вроде

sudo mkdir /mnt/video
sudo mount -t nfs 192.168.1.100:/web/raid/video /mnt/video

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

#!/bin/bash

# Корневой каталог для монтирования.
DIRECTORY="/mnt/thecus/"
# Адрес сервера.
SERVER="192.168.1.100"
# Корневой каталог сервера.
SERVER_ROOT="/web/raid/"
# Каталоги на сервере, теже имена имеют каталоги, в которые они монтируются.
SERVER_DIRECTORIES=("video" "documents" "development" "projects" "soft")
# Параметр для монтирования всех каталогов сервера.
ALL="all"
# Имя команды скрипта.
COMMAND="thecus"
# Параметр скрипта для монтирования.
MOUNT="mount"
# Параметр скрипта для размонтирования.
UMOUNT="umount"

#####################################################################
#####################################################################


# $1 - имя каталога на nfs сервере.
# Возвращает 0 в случае успеха.
function doMount() {
if [ ! -d $DIRECTORY ]; then
mkdir $DIRECTORY
if [ ! 0 == $? ]; then
echo $COMMAND: Не удалось создать каталог $DIRECTORY
return 1
fi
fi

if [ ! -d $DIRECTORY$1 ]; then
mkdir $DIRECTORY$1
if [ ! 0 == $? ]; then
echo $COMMAND: Не удалось создать каталог $DIRECTORY$1
return 1
fi
fi

mount -t nfs $SERVER:$SERVER_ROOT$1 $DIRECTORY$1
return $?
}

# $1 - имя каталога в $DIRECTORY для размонтирования.
# Возвращает 0 в случае успеха.
function doUmount() {
umount $DIRECTORY$1
return $?
}

# Монтирует все каталоги, игнорируя ошибки.
function mountAll() {
for DIR in ${SERVER_DIRECTORIES[@]}; do
doMount $DIR
done
}

# Размонтирует все каталоги, игнорируя ошибки.
function umountAll() {
for DIR in ${SERVER_DIRECTORIES[@]}; do
doUmount $DIR
done
}

# Проверяет $1 на валидность, в случае успеха возвращает 0.
function checkTargetName() {
for DIR in ${SERVER_DIRECTORIES[@]}; do
if [ $1 == $DIR ]; then
return 0
fi
done
return 1
}

# Печатает справку.
function printHelp() {
echo Использование:
echo -e " $COMMAND $MOUNT имя_каталога"
echo -e " $COMMAND $UMOUNT имя_каталога"
echo -e " $COMMAND $MOUNT $ALL"
echo -e " $COMMAND $UMOUNT $ALL"
echo
echo -e "$MOUNT - смонтировать каталог"
echo -e "$UMOUNT - размонтировать каталог"
echo
echo Допустимые имена каталогов:
for DIR in ${SERVER_DIRECTORIES[@]}; do
echo -e " $DIR"
done
echo
echo -e "$ALL - смонтировать/размонтировать все каталоги"
echo
echo Все каталоги монтируются в $DIRECTORY
}

# Выход с ошибкой
function errorExit() {
echo
printHelp
echo
exit 1
}

#####################################################################
#####################################################################


# Если параметров меньше 2-х, то напечатать справку и выйти.
if [ $# -lt 2 ]; then
errorExit
fi

# Если вторым параметром выбрали $ALL, то действие относится ко всем каталогам.
if [ $2 == $ALL ]; then
case $1 in
$MOUNT)
mountAll
;;
$UMOUNT)
umountAll
;;
*)
errorExit
;;
esac
else
# Проверяем второй параметр на валидность.
checkTargetName $2
if [ ! $? == 0 ]; then
echo $COMMAND: Неверный каталог: $2
errorExit
fi

case $1 in
$MOUNT)
doMount $2
;;
$UMOUNT)
doUmount $2
;;
*)
errorExit
;;
esac
fi

Я сохранил этот скрипт под именем thecus в каталог /usr/local/bin и назначил права на выполнение. Теперь, для монтирования всех моих каталогов на NFS сервере, мне достаточно дать команду

sudo thecus mount all

Из комментов в тексте скрипта ясно,что он делает.