2013年2月20日 星期三

auto mount NAS direct on /home/

最近因為需要處理NAS 上的資料 , 每天早上開機都要 mount 一次 , 麻煩 , 寫一個 shell 來自動 mount 吧 !!

開機完畢後只要執行這個 shell 就會將需要的 mount 好. 預設值是 Public & Software 資料夾 , mount 位置在 /home/${USER}/NAS/ , 並且會自動建立對應位置 , 如果需要額外資料夾 , 可以 使用 nas_mount.sh abc 的方式.
這個 shell 會檢查 NAS 是否在線上 (ping IP) .
也會自動檢查是否已經 mount 好了.

內容如下:


#!/bin/sh
#
# vi:set ts=4:

## ===== defind echo color
COLOR_ECHO="echo -e"        ## in Fedora the color echo need have -e argument.
COLOR_NORMAL="\033[0m"
COLOR_BOLD="\033[1m"
COLOR_RED="\033[31m"
COLOR_GREEN="\033[32m"
COLOR_YELLOW="\033[33m"
COLOR_BLUE="\033[34m"

## =====================================
## NAS Mount function.
## =====================================
function NAS_mount()
{
nas_dir="$1"
mnt_dir="$2"

## ---- echo some message .
${COLOR_ECHO} "${COLOR_BOLD}""${COLOR_BLUE}" \
                "## Mount NAS \"${nas_dir}\" director on \"${mnt_dir}\" ........" \
                "${COLOR_NORMAL}"

## ---- check mnt_dir exist
if [ ! -e "${mnt_dir}" ];then
    mkdir -p ${mnt_dir}
fi

## ---- check already mounted
_mounted=`cat /proc/mounts | grep NAS/${nas_dir} | awk '{print $2}'`
_mount_src=`cat /proc/mounts | grep NAS/${nas_dir} | awk '{print $1}'`

if [ -n "${_mounted}" ];then
    ${COLOR_ECHO} "${COLOR_BOLD}""${COLOR_GREEN}" \
                "    # NAS \"${_mount_src}\" Already mount on \"${mnt_dir}\"  ......" \
                "${COLOR_NORMAL}"
else

    _nas_aliv=`ping ${NAS_IP} -c 1 | grep errors  | sed 's/.*errors/errors/g' | sed 's/errors.*/errors/g' `
    if [ -z "${_nas_aliv}" ];then
        echo xxxxxxx | su -c " mount.cifs //192.168.2.6/${nas_dir} ${mnt_dir} -o user=jeff -o pass=xxxxxxxxx" > /dev/null 2>&1

    else
        ${COLOR_ECHO} "${COLOR_BOLD}""${COLOR_RED}" \
                    "NAS Server not ready \"${NAS_IP}\" ........" \
                    "${COLOR_NORMAL}"
    fi
fi


}

## ===== Mount NAS on System.
NAS_IP="192.168.2.6"


if [ -z "$1" ];then
    NAS_mount "Software" "/home/${USER}/NAS/Software"
    NAS_mount "Public" "/home/${USER}/NAS/Public"
else
    NAS_mount "${1}" "/home/${USER}/NAS/${1}"
fi

## =================

沒有留言:

張貼留言