计算本地磁盘和外挂磁盘的脚本

Shell Liemer_Lius 800℃

使用mutipath -l可以查看到本地是否有日立的外挂存储,接着通过这个条件,过滤出我们需要的所有磁盘信息,再加以处理,就是我们需要的结果:

touch pysi_size.txt hi_size.txt
cat /dev/null > pysi_size.txt
cat /dev/null > hi_size.txt

dm_hit="""`sudo multipath -l |grep "dm-" |grep HITACHI |awk '{print $2}'`"""
dm_pysical="""`sudo multipath -l |grep "dm-" |grep -v HITACHI |awk '{print $2}'`"""

for i in `echo $dm_pysical`; do
    pysi_size=`sudo multipath -l |grep "$i" -A1 |grep size |awk '{print $1}' |awk -F= '{if ($2~/G/) sub(/G/,"",$2); print $2}'`
    echo $pysi_size >> pysi_size.txt
done

for i in `echo $dm_hit`; do
    hit_size=`sudo multipath -l |grep "$i" -A1 |grep size |awk '{print $1}' |awk -F= '{if ($2~/G/) {sub(/G/,"",$2); print $2} else {sub(/T/,"",$2); print 1024*$2}}'`
    echo $hit_size >> hi_size.txt
done

cat pysi_size.txt |awk '{(pysi_sum+=$1)} END {print pysi_sum}'
cat hi_size.txt |awk '{(hi_sum+=$1)} END {print hi_sum}'

我们使用的是临时文件的方式,让计算出来的数值,先存入文件;

另外,就是awk的条件判断,通过匹配G和T来进行不同的计算。

 

上面的脚本执行时候有点问题,后续研究,换了一种方法:

#!/bin/bash
touch pysi_size.txt hit_size.txt
cat /dev/null > pysi_size.txt
cat /dev/null > hit_size.txt

dm_pysical="""`sudo multipath -l |grep "dm-" |grep -v HITACHI |awk '{print $2}'`"""
dm_hit="""`sudo multipath -l |grep "dm-" |grep HITACHI |awk '{print $2}'`"""

for i in `echo $dm_pysical`; do
pysi_size=`sudo multipath -l |egrep "\<$i\>" -A1 |grep size |awk '{print $1}'`
echo $pysi_size >> pysi_size.txt
done

for j in `echo $dm_hit`; do
hit_size=`sudo multipath -l |egrep "\<$j\>" -A1 |grep size |awk '{print $1}'`
echo $hit_size >> hit_size.txt
done

sum_pysi=0
for k in `cat pysi_size.txt`; do
    if echo $k |grep G &> /dev/null; then
        pysi_num=`echo $i |tr -d G`
    elif echo $k |grep T &> /dev/null; then
        pysi_tr=`echo $k |tr -d T`
        pysi_num=`echo "1024*${pysi_tr}" |bc`
    fi
    sum_pysi=`echo "${sum_pysi}+${pysi_num}" |bc`
done

sum_hi=0
for l in `cat hit_size.txt`; do
    if echo $l |grep G &> /dev/null; then
        hi_num=`echo $l |tr -d G`
    elif echo $l |grep T &> /dev/null; then
        hi_tr=`echo $l |tr -d T`
        hi_num=`echo "1024*${hi_tr}" |bc`
    fi
    sum_hi=`echo "${sum_hi}+${hi_num}" |bc`
done
echo $sum_pysi $sum_hi

rm pysi_size.txt hit_size.txt

 

转载请注明:liutianfeng.com » 计算本地磁盘和外挂磁盘的脚本

喜欢 (0)

评论已关闭。