局域网自动挂载脚本

升级一下脚本,version 2.0

#!/bin/bash
#检查用户身份
if [ $UID -ne 0 ];then
    echo 'Only use by root!'
    exit 1
fi
#加载地址账号密码
if [ -f /etc/lanmount.conf ];then
    . /etc/lanmount.conf
else
    echo 'Need a configure file!'
    exit 2
fi
#取得共享目录
SHAREDIR=`smbclient -L $IP -U $USERNAME%$PASSWORD|grep 'Disk'|awk '{print $1}'`
#需要至少1个参数
if [ "$#" -eq 0 ];then
    echo "Input a target to mount!"
    exit 3
fi
#如果参数为all则挂载所有目录,否则仅挂载指定目录
if [ "$#" -eq 1 ];then
    if [ "$@" = "all" ];then
    INPUT=$SHAREDIR
    else INPUT=$@
    fi
else
    INPUT=$@
fi
    
#目标目录逐一带入循环
for DIR in $INPUT
    do
#检查目标目录是否存在于共享目录中,不在则提示未共享,并进入下一次循环
    [[ ! ${INPUT[@]} =~ ${DIR} ]] && echo "$DIR is not shared!" && continue 
#检查目标目录是否已经被挂载
    mountpoint -q /mnt/${DIR}  && echo "$DIR already mounted!" && continue
#检查挂载位置是否建立目录,没有则建立目录
    mkdir -p /mnt/$DIR
#执行挂载指令
    mount -t cifs -o rw,username=$USERNAME,password=$PASSWORD,iocharset=utf8,uid=1000,gid=1000,vers=2.0 //$IP/$DIR /mnt/$DIR && echo "$DIR mounted!"
done

第一版绕了好多弯路,基础真心重要,放上来警示一下。version 1.0

#!/bin/bash
#检查用户身份
if [ $UID -ne 0 ];then
    echo 'Only use by root!'
    exit 1
fi
#加载地址账号密码
if [ -f /etc/lanmount.conf ];then
    source /etc/lanmount.conf
else
    echo 'Need a configure file!'
    exit 2
fi
#取得共享目录
SHAREDIR=`smbclient -L $IP -U $USERNAME%$PASSWORD|grep 'Disk'|awk '{print $1}'`
#取得当前已挂载目录
MOUNTEDDIR=`mount|awk '{print $1}'|grep '^//'`
#需要至少1个参数
if [ "$#" -eq 0 ];then
    echo "Input a target to mount!"
    exit 3
fi
#如果参数为all则挂载所有目录,否则仅挂载指定目录
if [ "$#" -eq 1 ];then
    if [ "$@" = "all" ];then
    INPUT=$SHAREDIR
    else INPUT=$@
    fi
else
    INPUT=$@
fi
#check 函数用来检测输入是否存在于变量中

check(){
    echo "$2"|grep "^$1$" >/dev/null 2>&1
}

    
#目标目录逐一带入循环
for DIR in $INPUT
    do
#检查目标目录是否存在于共享目录中,不在则提示未共享,并进入下一次循环
    check "$DIR" "$SHAREDIR"
    if [ $? -ne 0 ];then
    echo "$DIR is not shared!"
    continue    
    fi
#检查目标目录是否已经被挂载
    check "//$IP/$DIR" "$MOUNTEDDIR"
    if [ $? -eq 0 ];then
    echo "$DIR already mounted!"
    continue
    fi  
#检查挂载位置是否建立目录,没有则建立目录
    if [ ! -d /mnt/$DIR ];then
    mkdir /mnt/$DIR
    fi
#执行挂载指令
    mount -t cifs -o rw,username=$USERNAME,password=$PASSWORD //$IP/$DIR /mnt/$DIR
    echo "$DIR mounted!"
done

对应的配置文件

USERNAME=user
PASSWORD=password
IP=192.168.1.100

你可能感兴趣的:(局域网自动挂载脚本)