免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1463 | 回复: 0
打印 上一主题 下一主题

[网络相关] 远程登录并MOUNT 共享目录 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-10-19 19:10 |只看该作者 |倒序浏览
本帖最后由 jeppeter 于 2016-10-19 19:13 编辑
  1. #! /bin/bash

  2. DEF_VERBOSE=0
  3. verbose=$DEF_VERBOSE
  4. ECHO=`/usr/bin/which echo`
  5. DEF_DIRECTORY="/mnt/zdisk"
  6. AWK=`/usr/bin/which awk`
  7. mntdir=$DEF_DIRECTORY
  8. MKDIR=`/usr/bin/which mkdir`
  9. MOUNT=`/usr/bin/which mount`
  10. 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;}}'

  11. EQUALAWK_STR='{if($0==searchvar){print$0}}'
  12. GREP=`/usr/bin/which grep`
  13. SUDO_PREFIX=`/usr/bin/which sudo`

  14. DEF_SMBDIR=""
  15. DEF_SMBPARTDIR="zdisk"
  16. DEF_SMBHOST=`${ECHO} $SSH_CLIENT | ${AWK} '{print $1}'`
  17. if [ ! -z "$SSH_CLIENT" ]
  18.         then
  19.         DEF_SMBDIR="//$DEF_SMBHOST/$DEF_SMBPARTDIR"
  20. fi
  21. smbdir=$DEF_SMBDIR
  22. smbpartdir=$DEF_SMBPARTDIR
  23. smbhost=$DEF_SMBHOST

  24. DEF_USER=$USER
  25. DEF_PASS=""

  26. username=$DEF_USER
  27. password=$DEF_PASS

  28. Debug()
  29. {
  30.         _fmt=$1
  31.         ${ECHO} "$_fmt"
  32. }

  33. ErrorExit()
  34. {
  35.         _ec=$1
  36.         _fmt=$2

  37.         ${ECHO} "$_fmt" >2
  38.         exit $_ec
  39. }


  40. MakeDirNotExist()
  41. {
  42.         _dir=$1
  43.         if [ ! -d "$_dir" ]
  44.                 then
  45.                 if [ ! -e "$_dir" ]
  46.                         then
  47.                         ${MKDIR} -p "$_dir"
  48.                         _res=$?
  49.                 else
  50.                         ErrorExit 3 "$_dir exists but not directory"
  51.                 fi

  52.                 if [ $_res -ne 0 ]
  53.                         then
  54.                         ErrorExit $_res "mkdir $_dir error($_res)"
  55.                 fi
  56.         fi
  57. }

  58. CheckMountSmb()
  59. {
  60.         _smbdir=$1
  61.         _mntdir=$2
  62.         _mounted=0

  63.         _hasmounted=`${MOUNT} | ${AWK} -v splitchar=on -v searchidx=1 "$SPLITAWK_STR"  | ${AWK} -v searchvar="$_smbdir" "$EQUALAWK_STR"`
  64.         if [ ! -z "$_hasmounted" ]
  65.         then
  66.                 _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"`
  67.                 if [ ! -z "$_mountpoint" ]
  68.                 then
  69.                         _mounted=1
  70.                 fi
  71.         fi
  72.         ${ECHO} "$_mounted"
  73. }

  74. MountSmb()
  75. {
  76.         _smbdir=$1
  77.         _mntdir=$2
  78.         _user=$3
  79.         _pass=$4

  80.         ${SUDO_PREFIX} ${MOUNT} "$_smbdir" "$_mntdir" -o username=$_user,password=$_pass
  81.         _res=$?
  82.         if [  $_res -ne 0 ]
  83.                 then
  84.                 ErrorExit $_res "mount $_smbdir $_mntdir error($_res)"
  85.         fi
  86. }


  87. Usage()
  88. {
  89.         _ec=$1
  90.         _fmt=$2
  91.         _fp=/proc/$/fd/2

  92.         if [ $_ec -eq 0 ]
  93.                 then
  94.                 _fp=/proc/$/fd/1
  95.         fi

  96.         ${ECHO} "$0 [OPTIONS] [password] [username]" >$_fp
  97.         ${ECHO} "  -h|--help                     to display this help information" >$_fp
  98.         ${ECHO} "  -d|--directory dir            to specify directory to mount default($DEF_DIRECTORY)" >$_fp
  99.         ${ECHO} "  -v|--verbose                  to specify verbose mode default($DEF_VERBOSE)" >$_fp
  100.         ${ECHO} "  -H|--host hostip              to specify remote host default($DEF_SMBHOST)" >$_fp
  101.         ${ECHO} "  -p|--part partdir             to specify part dir default($DEF_SMBPARTDIR)" >$_fp
  102.         ${ECHO} "  [username]                    to specify username default($DEF_USER)" >$_fp
  103.         ${ECHO} "  [password]                    to specify password default($DEF_PASS)" >$_fp

  104.         exit $_ec
  105. }


  106. while [ $# -gt 0 ]
  107. do
  108.         breakone=0
  109.         case "$1" in
  110.                 -h|--help)
  111.                         Usage 0 ""
  112.                         ;;
  113.                 -d|--directory)
  114.                         if [ $# -gt 1 ]
  115.                                 then
  116.                                 mntdir="$2"
  117.                                 shift
  118.                         else
  119.                                 Usage 3 "$1 need directory"
  120.                         fi
  121.                         ;;
  122.                 -v|--verbose)
  123.                         verbose=`expr $verbose + 1`
  124.                         ;;
  125.                 -H|--host)
  126.                         if [ $# -gt 1 ]
  127.                                 then
  128.                                 smbhost="$2"
  129.                                 shift
  130.                         else
  131.                                 Usage 3 "$1 need directory"
  132.                         fi
  133.                         ;;
  134.                 -p|--part)
  135.                         if [ $# -gt 1 ]
  136.                                 then
  137.                                 smbpartdir="$2"
  138.                                 shift
  139.                         else
  140.                                 Usage 3 "$1 need directory"
  141.                         fi
  142.                         ;;
  143.                 *)
  144.                         breakone=1
  145.                         ;;
  146.         esac
  147.         if [ $breakone -ne 0 ]
  148.                 then
  149.                 break
  150.         fi
  151.         shift
  152. done

  153. if [ $# -gt 0 ]
  154.         then
  155.         password="$1"
  156.         shift
  157. fi

  158. if [ $# -gt 0 ]
  159.         then
  160.         username="$1"
  161.         shift
  162. fi

  163. smbdir="//$smbhost/$smbpartdir"

  164. mounted=$(CheckMountSmb "$smbdir"  "$mntdir" )
  165. if [ $mounted -eq 0 ]
  166.         then
  167.         MountSmb "$smbdir" "$mntdir" "$username" "$password"
  168. fi
复制代码



这里调用
  1. sshsmbmount password username
复制代码

这个只要在~/.bashrc中加入

  1. if [ -n "$SSH_CLIENT" ]
  2. then
  3.        $HOME/bin/sshsmbmount -p partdir password username
  4. fi
复制代码
这样就可以在登录远程机器的时候,就会mount 上对应的共享目录,如果已经mount上,则不做什么,如果没有,就mount
如password:123456
username:admin
//192.168.1.22/zdisk

输入

  1. if [ -n "$SSH_CLIENT" ]
  2. then
  3.     $HOME/bin/sshsmbmount -p zdisk 123456 admin
  4. fi
复制代码







您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP