zoukankan      html  css  js  c++  java
  • SHELL脚本实现分区

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

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

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

    3,抹除那块硬盘上的所有分区(提示,抹除所有分区后执行sync命令,并让脚本睡眠3秒后在分区),并为其创建三个主分区,第一个为20M,第二个为512M,第三个为128M,切第三个为swap分区类型;(提示:将分区命令通过echo传给fdisk即可实现)

    #!/bin/bash
    #
    echo "Initial a disk..."
    echo -e "33[31mWarning:33[0m"
    fdisk -l 2> /dev/null | grep -o "^Disk /dev/[sh]d[a-z]"
    
    read -p "Your Choose:" PARTDISK
    if [ $PARTDISK == 'quit' ];then
    echo "quit"
    exit 7; 
    fi
    until fdisk -l 2> /dev/null | grep -o "Disk /dev/[sh]d[a-z]" | grep "^Disk $PARTDISK$" &> /dev/null;do
    read -p "Wrong option,Your choice aging:" PARTDISK
    done
    read -p "will destroy all data,continue:" CHOICE
    until [ $CHOICE == 'y' -o $CHOICE == 'n' ];do
    read -p "Will destroy all data,continue:" CHOICE
    done
    if [ $CHOICE == 'n' ];then
    echo "QUIT"
    exit 9; 
    else
    dd if=/dev/zero of=$PARTDISK bs=512 count=1 &> /dev/null
    sync 
    sleep 3 
    echo 'n 
    p
    1
    
    +20M 
    n
    p
    2
    
    +512M 
    n
    p
    
    n
    p
    3
    
    +128M
    t
    3
    82
    w' | fdisk $PARTDISK &> /dev/null
    partprobe $PARTDISK
    sync
    sleep 2
    mke2fs -j ${PARTDISK}1 &> /dev/null
    mke2fs -j ${PARTDISK}2 &> /dev/null
    mkswap ${PARTDISK}3 &> /dev/null
    fi

    执行过程:

    [root@localhost ~]# ./partdisk.sh 
    Initial a disk...
    Warning:
    Disk /dev/sda
    Disk /dev/sdb
    Disk /dev/sdc
    Disk /dev/sdd
    Your Choose:/dev/sdb
    will destroy all data,continue:y
    1+0 records in
    1+0 records out
    512 bytes (512 B) copied, 0.0304787 s, 16.8 kB/s
    [root@localhost ~]# fdisk -l
    
    Disk /dev/sda: 21.5 GB, 21474836480 bytes
    255 heads, 63 sectors/track, 2610 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00051800
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1          39      307200   83  Linux
    Partition 1 does not end on cylinder boundary.
    /dev/sda2              39         549     4096000   82  Linux swap / Solaris
    Partition 2 does not end on cylinder boundary.
    /dev/sda3             549        2611    16567296   83  Linux
    
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes
    255 heads, 63 sectors/track, 2610 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x18756792
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1           4       32098+  83  Linux
    /dev/sdb2               5          70      530145   83  Linux
    /dev/sdb3              71          87      136552+  82  Linux swap / Solaris
    
    Disk /dev/sdc: 21.5 GB, 21474836480 bytes
    255 heads, 63 sectors/track, 2610 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    
    
    Disk /dev/sdd: 21.5 GB, 21474836480 bytes
    255 heads, 63 sectors/track, 2610 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    
    [root@localhost ~]# mount /dev/sdb1 /mnt
    [root@localhost ~]# ls /mnt
    lost+found
    [root@localhost ~]# vi partdisk.sh 
    [root@localhost ~]# umount /mnt
  • 相关阅读:
    python 文件目录/方法
    python文件
    python模块
    python数据结构
    python函数
    python迭代器和生成器
    python循环语句
    python控制语句 if
    python数字
    个人课程总结
  • 原文地址:https://www.cnblogs.com/vincent4code/p/4789416.html
Copyright © 2011-2022 走看看