免费注册 查看新帖 |

Chinaunix

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

自动挂载所有Windows分区的脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-10 21:50 |只看该作者 |倒序浏览
闲着无聊,编了个自动挂载所有Windows分区的脚本,一般来说这个脚本只需用一次就好了,因为下次系统启动时就会自动挂载所有windows分区了^_^,如果想卸载windows分区并还原到原来的系统配置,只需在该脚本名后加参数-m就OK了,如果一次卸载不成功可以多试几次的,经测试基本没有问题:
#!/bin/sh

if [ $# -eq 0 ]; then

fdisk -l | awk '$1 ~ /\dev/ && $NF ~ /FAT/ || $NF ~ /NTFS/{print $1;}' > /tmp/temp$$
        if [ ! -f /etc/fstab~~ ]; then
                 cp /etc/fstab /etc/fstab~~
        fi

awk 'NR==FNR{ a[$1]=$1 } NR>FNR{ if( $1 != a[$1] ) print $0; }' /tmp/temp$$ /etc/fstab > /tmp/temp${$}$

awk '{split($1,dir,"/";printf("%s\t\t/mnt/%s\t\tauto\tiocharset=cp936,umask=0,exec,sync 0 0\n",$1,dir[3])}' /tmp/temp$$ >> /tmp/temp${$}$

mv /tmp/temp${$}$ /etc/fstab
awk -F [/] '{print "/mnt/"$3;}' /tmp/temp$$ | xargs mkdir 2>/dev/null
rm -f /tmp/temp$$
mount -a
if [ $? -eq 0 ]; then
  echo "All Windows Partitions are mounted into the /mnt !";
fi
else
USAGE=" \t`basename $0` -m \t\t -- Umount all Windows Partitions!\n "
while getopts m option 2> /dev/null
do
    case $option in
       m )
           mount|grep /mnt/hd > /dev/null
           if [ $? -eq 0 ]; then
       dirs=`mount|awk '$3 ~ /\mnt\/hd/{ print $3;}'`
   for dir in $dirs
   do
    umount $dir 2> /dev/null
    if [ $? -eq 0 ]; then
     echo "$dir is umounted!"
     rmdir $dir
    else echo -e "\\a\33[31m$dir can\047t be umounted! Please try again!\33[0m"
    fi
   done
     if [ -f /etc/fstab~~ ];then
    mv /etc/fstab~~ /etc/fstab
     fi
    fi
    break
    ;;
        * ) echo -e " Usage:\n $USAGE ";
   exit 1
    ;;
    esac
done
fi

论坛徽章:
0
2 [报告]
发表于 2005-08-11 11:17 |只看该作者

自动挂载所有Windows分区的脚本

good

求职 : 数据库管理员
论坛徽章:
0
3 [报告]
发表于 2005-08-11 13:30 |只看该作者

自动挂载所有Windows分区的脚本

我這個對於lvm分區中的文件系統沒有做區分,
lvm中有些文件系統不認識mount時出錯

  1. #!/bin/bash
  2. mtlvm()
  3. {
  4. lvscan |cut -d "'" -f 2 |
  5. while read   ldev    ;do
  6.         dname=$(readlink $ldev) ;
  7.         mtlv  $dname ;
  8. done ;
  9. }

  10. mtlv()
  11. {
  12. bname=$(basename $1)
  13. echo "$bname"|awk -F- '{print $1,$2}'  |if  read  vg lv  ; then
  14.         mdir=$MNTDIR/$vg/$lv;
  15.         if [  "$(grep  $1  /etc/mtab)" = ""  ] ;then
  16.                 [ -d $mdir  ] || mkdir  -p $mdir   
  17.                 mount $1  $mdir            
  18.         fi        
  19. fi
  20. }


  21. MNTDIR=/mnt
  22. fdisk -l  |grep   "[sh]d[a-z][0-9]" |sed -e 's/*/ /' |awk '{print ($1,$5) }'|\
  23. while read  aa bb ; do
  24.         case "$bb" in
  25.         83|b|c|e)
  26.                 mdir=$MNTDIR/${aa#/dev/};
  27.                 [ -d $mdir ] || mkdir $mdir
  28.                  mcmd="mount $aa  $mdir ";  
  29.                 grep -q $aa /etc/mtab || $mcmd         ;;

  30.         8e)        #LVM       
  31.                 mtlvm ;
  32.                 ;;
  33.         *)  echo  $unknown  ;;
  34.         esac
  35. done

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP