- 论坛徽章:
- 1
|
本帖最后由 jeppeter 于 2016-10-19 19:13 编辑
- #! /bin/bash
- DEF_VERBOSE=0
- verbose=$DEF_VERBOSE
- ECHO=`/usr/bin/which echo`
- DEF_DIRECTORY="/mnt/zdisk"
- AWK=`/usr/bin/which awk`
- mntdir=$DEF_DIRECTORY
- MKDIR=`/usr/bin/which mkdir`
- MOUNT=`/usr/bin/which mount`
- SPLITAWK_STR='{curidx=1;curitem="";printout=0;curcon=$0;n=split($0,a);for(i=1;i<=NF;i++){spaces="";idx=index(curcon,a[i]);if(idx>1){spaces=substr(curcon,1,idx-1);curcon=substr(curcon,length(spaces)+1);}curcon=substr(curcon,length(a[i])+1);if(length(a[i])==0){if(length(curitem)>0){curitem=sprintf("%s%s",curitem,spaces);}continue;}if(a[i]==splitchar){if(curidx==searchidx){printf("%s\n",curitem);printout=1;break;}curitem="";curidx+=1;continue;}if(length(curitem)>0){curitem=sprintf("%s%s%s",curitem,spaces,a[i]);}else{curitem=$i;}}if(printout==0&&curidx==searchidx){printf("%s\n",curitem);printout=1;}}'
- EQUALAWK_STR='{if($0==searchvar){print$0}}'
- GREP=`/usr/bin/which grep`
- SUDO_PREFIX=`/usr/bin/which sudo`
- DEF_SMBDIR=""
- DEF_SMBPARTDIR="zdisk"
- DEF_SMBHOST=`${ECHO} $SSH_CLIENT | ${AWK} '{print $1}'`
- if [ ! -z "$SSH_CLIENT" ]
- then
- DEF_SMBDIR="//$DEF_SMBHOST/$DEF_SMBPARTDIR"
- fi
- smbdir=$DEF_SMBDIR
- smbpartdir=$DEF_SMBPARTDIR
- smbhost=$DEF_SMBHOST
- DEF_USER=$USER
- DEF_PASS=""
- username=$DEF_USER
- password=$DEF_PASS
- Debug()
- {
- _fmt=$1
- ${ECHO} "$_fmt"
- }
- ErrorExit()
- {
- _ec=$1
- _fmt=$2
- ${ECHO} "$_fmt" >2
- exit $_ec
- }
- MakeDirNotExist()
- {
- _dir=$1
- if [ ! -d "$_dir" ]
- then
- if [ ! -e "$_dir" ]
- then
- ${MKDIR} -p "$_dir"
- _res=$?
- else
- ErrorExit 3 "$_dir exists but not directory"
- fi
- if [ $_res -ne 0 ]
- then
- ErrorExit $_res "mkdir $_dir error($_res)"
- fi
- fi
- }
- CheckMountSmb()
- {
- _smbdir=$1
- _mntdir=$2
- _mounted=0
- _hasmounted=`${MOUNT} | ${AWK} -v splitchar=on -v searchidx=1 "$SPLITAWK_STR" | ${AWK} -v searchvar="$_smbdir" "$EQUALAWK_STR"`
- if [ ! -z "$_hasmounted" ]
- then
- _mountpoint=`${MOUNT} | ${GREP} "$_smbdir" | ${AWK} -v splitchar=on -v searchidx=2 "$SPLITAWK_STR" | ${AWK} -v splitchar=type -v searchidx=1 "$SPLITAWK_STR" | ${AWK} -v searchvar="$_mntdir" "$EQUALAWK_STR"`
- if [ ! -z "$_mountpoint" ]
- then
- _mounted=1
- fi
- fi
- ${ECHO} "$_mounted"
- }
- MountSmb()
- {
- _smbdir=$1
- _mntdir=$2
- _user=$3
- _pass=$4
- ${SUDO_PREFIX} ${MOUNT} "$_smbdir" "$_mntdir" -o username=$_user,password=$_pass
- _res=$?
- if [ $_res -ne 0 ]
- then
- ErrorExit $_res "mount $_smbdir $_mntdir error($_res)"
- fi
- }
- Usage()
- {
- _ec=$1
- _fmt=$2
- _fp=/proc/$/fd/2
- if [ $_ec -eq 0 ]
- then
- _fp=/proc/$/fd/1
- fi
- ${ECHO} "$0 [OPTIONS] [password] [username]" >$_fp
- ${ECHO} " -h|--help to display this help information" >$_fp
- ${ECHO} " -d|--directory dir to specify directory to mount default($DEF_DIRECTORY)" >$_fp
- ${ECHO} " -v|--verbose to specify verbose mode default($DEF_VERBOSE)" >$_fp
- ${ECHO} " -H|--host hostip to specify remote host default($DEF_SMBHOST)" >$_fp
- ${ECHO} " -p|--part partdir to specify part dir default($DEF_SMBPARTDIR)" >$_fp
- ${ECHO} " [username] to specify username default($DEF_USER)" >$_fp
- ${ECHO} " [password] to specify password default($DEF_PASS)" >$_fp
- exit $_ec
- }
- while [ $# -gt 0 ]
- do
- breakone=0
- case "$1" in
- -h|--help)
- Usage 0 ""
- ;;
- -d|--directory)
- if [ $# -gt 1 ]
- then
- mntdir="$2"
- shift
- else
- Usage 3 "$1 need directory"
- fi
- ;;
- -v|--verbose)
- verbose=`expr $verbose + 1`
- ;;
- -H|--host)
- if [ $# -gt 1 ]
- then
- smbhost="$2"
- shift
- else
- Usage 3 "$1 need directory"
- fi
- ;;
- -p|--part)
- if [ $# -gt 1 ]
- then
- smbpartdir="$2"
- shift
- else
- Usage 3 "$1 need directory"
- fi
- ;;
- *)
- breakone=1
- ;;
- esac
- if [ $breakone -ne 0 ]
- then
- break
- fi
- shift
- done
- if [ $# -gt 0 ]
- then
- password="$1"
- shift
- fi
- if [ $# -gt 0 ]
- then
- username="$1"
- shift
- fi
- smbdir="//$smbhost/$smbpartdir"
- mounted=$(CheckMountSmb "$smbdir" "$mntdir" )
- if [ $mounted -eq 0 ]
- then
- MountSmb "$smbdir" "$mntdir" "$username" "$password"
- fi
复制代码
这里调用
- sshsmbmount password username
复制代码
这个只要在~/.bashrc中加入
- if [ -n "$SSH_CLIENT" ]
- then
- $HOME/bin/sshsmbmount -p partdir password username
- fi
复制代码 这样就可以在登录远程机器的时候,就会mount 上对应的共享目录,如果已经mount上,则不做什么,如果没有,就mount
如password:123456
username:admin
//192.168.1.22/zdisk
输入
- if [ -n "$SSH_CLIENT" ]
- then
- $HOME/bin/sshsmbmount -p zdisk 123456 admin
- fi
复制代码
|
|