业务环境:公司的业务为运营商业务,因为客户要的虚拟主机不知道它到底定制了几块磁盘,shell如下:
#!/bin/bash
###此脚本用于自动检测磁盘并且判断磁盘是否挂载且挂载到指定的目录####
init=0 #定义变量方便while中操作数组
cata_mount=(/home /tmp) #定义需要磁盘挂载到的目录
disk_total=fdisk -l | grep -o "^Disk /dev/[sh]d[a-z]"|awk '{print $2}'|grep -v "/dev/[vsh]da"|sort
#过滤盘符并且按顺序排序
test_dev(){
while [ "$#" -ne 0 ];do
case "$1" in
/dev/[shv]d[a-z])
echo "ready?go"
UUID=`blkid|grep -o "$1"` #找出磁盘的uuid的盘符
echo "$UUID"
mount $1 /${cata_mount[$init]} >& /dev/null #检测磁盘是否能够挂载
#mount不成功有两种情况:1、定制磁盘了没有格式化,没有挂载2、已经格式化已经挂载后,因此要判断两项
[ $? -ne 0 ]&& [ -z "$UUID" ] && mkfs.ext4 -F $1 && echo "`blkid|grep "$1"|awk '{print $2}'|sed 's#"##g'` ${cata_mount[$init]} defaults 0 0" >> /etc/fstab && let init+=1
shift
;;
*)
echo "get out!"
;;
esac
done
}
test_dev $disk_total
ubuntu16.04 亲测可用,如有更优化的方案,请多多指点。