shell脚本(输入指标,比较判断门限,进行处理)

输入

ID  CLASS  WEIGHT   REWEIGHT  SIZE     RAW USE  DATA     OMAP     META     AVAIL    %USE   VAR   PGS  STATUS
 7    ssd  0.01949   1.00000   20 GiB  9.8 MiB  4.6 MiB      0 B  5.2 MiB   20 GiB   0.05  0.02    1      up
 6    ssd  0.01949   1.00000   20 GiB  9.9 MiB  4.6 MiB      0 B  5.3 MiB   20 GiB   0.05  0.02    1      up
 5    ssd  0.01949   1.00000   20 GiB   10 MiB  4.6 MiB    1 KiB  5.4 MiB   20 GiB   0.05  0.02    1      up
 4    ssd  0.01949   1.00000   20 GiB  9.9 MiB  4.6 MiB      0 B  5.4 MiB   20 GiB   0.05  0.02    1      up
 3    ssd  0.01949   1.00000   20 GiB  9.9 MiB  4.6 MiB      0 B  5.4 MiB   20 GiB   0.05  0.02    1      up
 2    ssd  0.01949   1.00000   20 GiB   10 MiB  4.6 MiB      0 B  5.4 MiB   20 GiB   0.05  0.02    1      up
 1    ssd  0.01949   1.00000   20 GiB   10 MiB  4.6 MiB      0 B  5.5 MiB   20 GiB   0.05  0.02    1      up
 0    ssd  0.01949   1.00000   20 GiB  3.3 GiB  3.3 GiB      0 B   11 MiB   17 GiB  16.45  7.84    1      up
                       TOTAL  160 GiB  3.4 GiB  3.3 GiB  1.0 KiB   49 MiB  157 GiB   2.10  

如果%USE > 门限值,则进行相应处理。

#!/bin/bash

# 指定阈值
file=$1
threshold=$2

# 读取文件内容,去掉首字符不是数字的行,提取ID字段和%USE字段
while read line; do
    #echo "$line"
    if [[ "$line" =~ ^[[:digit:]] ]]; then
        id=$(echo "$line" | awk -F '[[:space:]][[:space:]]+' '{print $1}')
        use=$(echo "$line" | awk -F '[[:space:]][[:space:]]+' '{print $11}')

        if (( $(echo "$use > $threshold" | bc -l) )); then
            echo "ID:$id use:$use,超过了门限$threshold,执行关闭"
            echo  ceph osd out $id
        fi
    fi
done < $file

猜你喜欢

转载自blog.csdn.net/weixin_39896629/article/details/130364305