73 lines
1.8 KiB
Bash
Executable File
73 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
#function-1:显示硬盘盘符+Lable+容量以及硬盘上电状态
|
|
#function-2:通过echo -e转义与if...elif...else语句使其active呈现红色,standby呈现绿色,方便快速检视硬盘上电情况
|
|
#function-3:原for循环语句中加入判断和循环计数方式,统计active和standby的数量
|
|
#function-4:增加 if 嵌套语句判断除开 active 和 standby 之外状态的硬盘,并将其标记为 unknown
|
|
#function-5:将unknown状态的硬盘列举出来(对for语句上瘾了……
|
|
|
|
dsk=`ls /dev/sd* | grep -Eo 'sd(a{2}|[a-z]+)$'`
|
|
echo `date +%c`
|
|
standby=0
|
|
active=0
|
|
unknown=0
|
|
c=0
|
|
|
|
if readlink /proc/$$/fd/1 2>/dev/null | grep -qF /dev/ ; then
|
|
highlight(){
|
|
echo -e "$1 $2 \033[0m"
|
|
}
|
|
else
|
|
highlight(){
|
|
echo -e "$2"
|
|
}
|
|
fi
|
|
|
|
for i in $dsk;
|
|
do
|
|
echo -e "\n";
|
|
echo -e "-----------------------";
|
|
echo -n "/dev/$i : " ;
|
|
stats=`smartctl -i -n standby /dev/$i|grep "mode"|awk '{print $4}' `;
|
|
#echo $stats
|
|
if [[ $stats == STANDBY ]]||[[ $stats == ACTIVE ]]||[[ $stats == IDLE_A ]]
|
|
then
|
|
for s in $stats;
|
|
do
|
|
if [ $s == STANDBY ]
|
|
then
|
|
highlight "\033[30;42m" " STANDBY "
|
|
let standby=$standby+1
|
|
else
|
|
highlight "\033[37;41m" " ACTIVE "
|
|
let active=$active+1
|
|
fi
|
|
done
|
|
else
|
|
highlight "\033[30;47m" " UNKNOWN "
|
|
let unknown=$unknown+1
|
|
for un in $i
|
|
do
|
|
list[c]=$un
|
|
((c++))
|
|
done
|
|
fi
|
|
echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $7}' `;
|
|
echo `lsblk /dev/$i|grep "/srv/dev-disk-by-label-"|awk '{print $4}' `;
|
|
done
|
|
|
|
echo -e "\n";
|
|
highlight "\033[37;41m" "Active Disk in Total=$active ";
|
|
highlight "\033[30;42m" "Standby Disk in Total=$standby ";
|
|
highlight "\033[30;47m" "Unknown Disk in Total=$unknown ";
|
|
#echo $c
|
|
echo -e "Unknown Disk list: ";
|
|
for((b=0;b<=$c;b++));
|
|
do
|
|
if [[ $b -lt $c ]]
|
|
then
|
|
echo ${list[b]}
|
|
fi
|
|
done
|
|
echo -e "\n";
|
|
exit
|