在阅读了几个主题之后,我设法让我的简单的smartctl脚本能够显示关于3WARE RAID控制器后面的硬盘的智能信息。
多亏了艾米丽·E,它现在以红色输出损坏的硬盘。但是,它会将阵列中的所有驱动器(带有损坏的驱动器)都涂成红色,而不是只挑出损坏的硬盘。
这是我到目前为止在脚本中得到的(更新感谢艾米丽E):
bold=$(tput bold)
red=$(tput setaf 1)
green=$(tput setaf 2)
normal=$(tput sgr0)
echo "${green}${bold}:: CONTROLLER POORT 0 - HARDDISK ARRAY A (22x) ::${normal}"
out0=$(
for i in {0..21}; do
echo -en '\n'
echo "HARDDISK $i" $SN $MD
smartctl -i -A /dev/twa0 -d 3ware,$i |grep -E "^ "5"|^"197"|^"198"|"FAILING_NOW"|"Serial"|"Smartctl""
done
)
if echo "$out0" | grep -q "Device Read Identity Failed"; then
echo "$red$out0"
else
echo "$out0"
fi
echo -en '\n'
echo -en '\n'
echo "${green}${bold}:: CONTROLLER POORT 1 - HARDDISK ARRAY B (22x) :::${normal}"
out1=$(
for i in {0..21}; do
echo -en '\n'
echo "HARDDISK $i" $SN $MD
smartctl -i -A /dev/twa1 -d 3ware,$i |grep -E "^ "5"|^"197"|^"198"|"FAILING_NOW"|"Serial"|"Smartctl""
done
)
if echo "$out1" | grep -q "Device Read Identity Failed"; then
echo "$red$out1"
else
echo "$out1"
fi
echo -en '\n'
echo -en '\n'
echo "${green}${bold}:: CONTROLLER POORT 1 - HARDDISK ARRAY OS (2x) :::${normal}"
out2=$(
for i in {0..1}; do
echo -en '\n'
echo "HARDDISK $i" $SN $MD
smartctl -i -A /dev/twa2 -d 3ware,$i |grep -E "^ "5"|^"197"|^"198"|"FAILING_NOW"|"Serial"|"Smartctl""
done
)
if echo "$out2" | grep -q "Device Read Identity Failed"; then
echo "$red$out2"
else
echo "$out2"
fi
echo -en '\n'有了新的/更新的代码,它现在将所有东西都涂成红色,而且还有整个阵列,而不只是一个驱动器。也许有办法解决这个问题呢?
如果不是,我会让它保持原样。但如果只将损坏的磁盘涂成红色,而不是整个阵列,则更容易注意到这一点。
发布于 2017-10-29 23:58:05
像这样写
out=$( smartctl ... )
if echo "$out" | grep -q "Device Read Identity Failed"; then
echo "$red$out"
else
echo "$out"
fihttps://stackoverflow.com/questions/46974703
复制相似问题