## sda 系统盘
## sdb 数据盘
[root@centos7 ~]# chmod 775 filterdisk.sh
[root@centos7 ~]# ./filterdisk.sh sda,sdb
#/bin/bash
#==============================================================#
# 脚本名 : filterdisk.sh
# 创建时间 : 2023-04-29 14:34:00
# 描述 : 过滤唯一uuid磁盘
# 版本 : 1.1.0
# 作者 : yuanzijian(yzj@dameng.com)
# Copyright (C) 2022-2023 Zijian yuan
#==============================================================#
##服务器版本
os_version=$(grep -oP '(?<=release\s|V)[[:digit:]]+' </etc/system-release)
#获取服务器磁盘
all_disk=`lsblk -l | awk '/^sd|vd/{print $1}' | sed -n '/[0-9]$/!p'`
#要过滤得磁盘
fil_disk=$1
#==============================================================#
# Get UUID #
#==============================================================#
function get_uuid() {
local uuid
case $os_version in
6)
uuid=$(/sbin/scsi_id -g -u "$1")
;;
*)
uuid=$(/usr/lib/udev/scsi_id -g -u "$1")
;;
esac
printf '%s' "$uuid"
}
#==============================================================#
# 获取磁盘容量 #
#==============================================================#
function disk_storage(){
lsblk -b -o SIZE -n "${1}" | awk '$1 >= 1024*1024*1024 {printf "%.1fG\n", $1/1024/1024/1024}'
}
#==============================================================#
# 过滤唯一uuid磁盘 #
#==============================================================#
function check_disk() {
# 以逗号分割数组
IFS=',' read -ra fil_disk_arr <<<"$fil_disk"
declare -a disk_list=()
# 使用for-in循环枚举all_disk数组中所有元素
for ad in ${all_disk// / }; do
# 判断$ad是否不存在于$fd中,如果是则执行下列操作
if ! [[ ${fil_disk_arr[*]} =~ $ad ]]; then
# 将"/dev/$disk"添加到disk_list中
disk_list+=("/dev/$ad")
fi
done
declare -A uuids=() # 声明存储磁盘 UUID 的关联数组
declare -A sizes=() # 声明存储磁盘容量大小的关联数组
# 处理每个磁盘的循环
for disk in "${disk_list[@]}"; do
sizes[$disk]=$(disk_storage "$disk") # 保存磁盘容量大小到关联数组中
uuid=$(get_uuid "$disk") # 获取磁盘的 UUID
# 如果磁盘有 UUID 并且它还没有添加到数组中,就将其添加到数组中
if [[ $uuid != "" && ! ${uuids[*]} =~ $uuid ]]; then
uuids[$disk]=$uuid
fi
done
# 遍历存储磁盘 UUID 的关联数组并打印每个磁盘的 UUID、名称和容量大小
for disk in "${!uuids[@]}"; do
echo "${uuids[$disk]} $disk ${sizes[$disk]}"
done | sort -k3n -k2
}
check_disk
文章
阅读量
获赞