磁盘分区脚本

#!/bin/bash
:<<EOF
磁盘分区脚本,支持高效云盘、虚拟机磁盘
文件系统:ext4
任思宇
2022-8-1
EOF

#检测磁盘数量
sysDisk=`cat /proc/partitions|grep -v name|grep -v ram|awk '{print $4}'|grep -v '^$'|grep -v '[0-9]$'|grep -v 'vda'|grep -v 'xvda'|grep -v 'sda'|grep -e 'vd' -e 'sd' -e 'xvd'`
if [ "${sysDisk}" == "" ]; then
        echo -e "Error:此服务器只有一块磁盘,无法挂载"
        echo -e "Bye-bye"
        exit;
fi

read -p "请输入普通用户名称:" name
if [ "$name" = root ];then
        echo "不能使用root!"
else
        useradd "$name"
fi

user_path=/home/"$name"

#数据盘自动分区
for i in `cat /proc/partitions|grep -v name|grep -v ram|awk '{print $4}'|grep -v '^$'|grep -v '[0-9]$'|grep -v 'vda'|grep -v 'xvda'|grep -v 'sda'|grep -e 'vd' -e 'sd' -e 'xvd'`;
do
        #判断指定目录是否被挂载
        isR=`df -P|grep "$user_path"`
        if [ "$isR" != "" ];then
                echo "Error: "$user_path" 已经挂载!"
                return;
        fi
        #判断磁盘是否挂载
        isM=`df -P|grep '/dev/${i}1'`
        if [ "$isM" != "" ];then
                echo "/dev/${i}1 已经挂载!"
                continue;
        fi
        #判断是否存在未分区磁盘
        isP=`fdisk -l /dev/$i |grep -v 'bytes'|grep "$i[1-9]*"`
        if [ "$isP" = "" ];then
                        #开始分区
                        fdisk -S 56 /dev/$i << EOF
n
p
1


wq
EOF
        sleep 5
        #检查是否分区成功
        checkP=`fdisk -l /dev/$i|grep "/dev/${i}1"`
        if [ "$checkP" != "" ];then
                #格式化分区
                mkfs.ext4 /dev/${i}1
                #挂载分区
                sed -i "/\/dev\/${i}1/d" /etc/fstab
                echo "/dev/${i}1    $user_path    ext4    defaults    0 0" >> /etc/fstab
                mount -a
                                df -h
                        fi
                else
                #挂载已有分区
                checkR=`df -P|grep "/dev/$i"`
                if [ "$checkR" = "" ];then
                        sed -i "/\/dev\/${i}1/d" /etc/fstab
                        echo "/dev/${i}1    $user_path    ext4    defaults    0 0" >> /etc/fstab
                        mount -a
                        df -h
                        fi

                        #清理不可写分区
                        echo 'True' > $user_path/checkD.pl
                        if [ ! -f $user_path/checkD.pl ];then
                                        sed -i "/\/dev\/${i}1/d" /etc/fstab
                                        mount -a
                                        df -h
                        else
                                        rm -f $user_path/checkD.pl
                        fi
                fi
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值