shell实现自动为磁盘分区

回复 收藏

写一个脚本(前提:请为虚拟机新增一块硬盘,假设它为/dev/sdb),为指定的硬盘创建分区:

1、列出当前系统上所有的磁盘,让用户选择,如果选择quit则退出脚本;如果用户选择错误,就让用户重新选择;

2、当用户选择后,提醒用户确认接下来的操作可能会损坏数据,并请用户确认;如果用户选择y就继续,n就退出;否则,让用户重新选择;

3、抹除那块硬盘上的所有分区(提示,抹除所有分区后执行sync命令,并让脚本睡眠3秒钟后再分区);并为其创建三个主分区,第一个为20M,第二个为512M, 第三个为128M,且第三个为swap分区类型;

2017-05-18 19:43 举报
已邀请:
0

济南-李聚章

赞同来自:

这是我写的,供大家参考:

#!/bin/bash
FDISK() {
fdisk $1 << EOF
n
p
1
1
+20M
n
p
2
 
+512M
n
p
3
 
+128M
t
3
82
p
w
EOF
}
fdisk -l |grep "Disk /"|cut -d: -f1|awk '{print $2}'
read -p "Your Choice:" DISK
while :;do
        fdisk -l |grep "$DISK" &>/dev/null
        if [ "$?" -eq 0 ];then
                break
        elif [ "$DISK" == "quit" ];then
                exit 1
        else
                blkid|cut -d: -f1
                read -p "Your Choice:" DISK
        fi
done
 
read -p "dangerous,Choice:n|y?" DAN
while :;do
case $DAN in
y)
        dd if=/dev/zero of=/dev/sdb bs=512 count=1
        sync
        sleep 3
        FDISK $DISK &>/dev/null
        fdisk -l $DISK
        break
        ;;
n)
        exit 2;;
*)
        read -p "dangerous,Choice:n|y?" DAN
        ;;
esac
done


0

Hasin - hello,i am haosin.i like sport ,art ,science

赞同来自:

  1. #!/bin/bash

  2. FDISK() {

  3. fdisk $1 << EOF

  4. n

  5. p

  6. 1

  7. 1

  8. +20M

  9. n

  10. p

  11. 2

  12. +512M

  13. n

  14. p

  15. 3

  16. +128M

  17. t

  18. 3

  19. 82

  20. w

  21. EOF

  22. }

  23. fdisk -l |grep "Disk /"|cut -c 6-13

  24. read -p " Choice your disk:" a

  25. while :;do

  26.         if [ $a == /dev/sda -o $a == /dev/sdb  ];then

  27.                 break

  28.         elif [ "$a" == quit ];then

  29.                exit

  30.         else

  31.                 read -p "plese retry,or quit:" a

  32.         fi

  33. done

  34. read -p " ##Warning##!!are you sure,it's will be over date n|y?" m

  35. while :;do

  36.   case  $m in

  37.   y)

  38.     dd if=/dev/zero of=$a bs=512 count=1

  39.    sync

  40.     sleep 3

  41.    FDISK $a

  42. break

  43. ;;

  44.   n)

  45. exit 2

  46.    ;;

  47.    *)

  48.     read -p "please retry: n|y?" m

  49. ;;

  50. esac

  51. done

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: