ubuntu使用Magecli检测磁盘状态并发送邮件

  • Post author:
  • Post category:其他




环境

操作系统: ubuntu 20.04

Megacli: 8.04.07-1

下载链接



邮件发送准备



安装heirloom-mailx

1)apt install heirloom-mailx -y

如果不能安装则在source.list添加:

    deb http://cz.archive.ubuntu.com/ubuntu xenial main universe

2)获取邮件发送服务器的smtp信息以及密码(不是登录密码)

3)修改mail的配置

vim /etc/s-nail.rc

set from="duskxxxx@163.com"
set smtp="smtp.163.com"
set smtp-auth-user="duskxxxx@163.com"
set smtp-auth-password="xxxxx"
set smtp-auth=login

4)测试邮件发送

 ##这两种方式都行
 echo "hello" | heirloom-mailx -s "邮件主题" -t recive-mail
 echo "hello" | s-nail -s "邮件主题" -t recive-mail



安装megacli

megacli只有rpm包,所以需要在ubuntu上将rpm转为deb包;



获取安装文件

官网下载安装包解压后如下图文件:

此处我是已经转换过后的,所有有deb文件。

在这里插入图片描述



MegaCli-8.04.07-1.noarch.rpm

转为deb文件

alien -k --scripts MegaCli-8.04.07-1.noarch.rpm



安装

dpkg -i megacli_8.04.07-1_all.deb
#安装文件在:/opt/MegaRAID/MegaCli下
ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/local/bin/megacli

到此就安装完成,如果在使用过程中缺失库文件,可以去centos下找到,然后放在/usr/lib/x86_64-linux-gnu下,也可以使用apt-file去安装。

如果有一下提示,可以不用管:

root@localhost:~/MegaCli# megacli -v
                                     
OSSpecificInitialize: Failed to load libsysfs.so.2.0.2 Please ensure that libsfs is present in the system.
The dependent library libsysfs.so.2.0.1 not available. Please contact LSI for distribution of the package

      MegaCLI SAS RAID Management Tool  Ver 8.04.07 May 28, 2012

    (c)Copyright 2011, LSI Corporation, All Rights Reserved.

Exit Code: 0x00



编写脚本实现功能

#! /bin/bash

##############################
#Function:check status of disk
#Exec_date:10M 
##############################

#Get status of disk


result_file=/root/MegaCli/result_file.txt
#判断结果文件是否是空文件,不是空文件则清空
if [ -s "${result_file}" ]
then
    > ${result_file}
fi

slot_count=`megacli -PDList -aALL | grep 'Slot Number' | wc -l`
slot_number=0
host_IP=`ifconfig bond0 | grep -E "inet.*broadcast" | awk '{print $2}'`
statu="Active"
health_num=0
echo "----------${host_IP}-----------" >> ${result_file}
while (($slot_number < $slot_count)) 
do
    disk_status=`megacli -pdinfo -PhysDrv[32:$slot_number] -aALL | grep 'Port status' | awk -F: '{print $2}'`
    size=`megacli -pdinfo -PhysDrv[32:$slot_number] -aALL | grep "Raw Size" | awk '{print $3" "$4}'`
    WWN=`megacli -pdinfo -PhysDrv[32:$slot_number] -aALL | grep "WWN"`
    echo "slot_number: $slot_number" >> ${result_file}
    echo "Status: ${disk_status}" >> ${result_file}
    echo "Size: ${size}" >> ${result_file}
    echo "${WWN}" >> ${result_file}
    if [ $disk_status = $statu ]
    then
        health_num=$[$health_num+1]
    fi
    slot_number=$((slot_number+1))
#    echo ">>>>>>" >> ${result_file} 
done
if [ $health_num -eq 4 ]
then
   #此处不能使用-t 不然result_file文件内容无法作为message发送到邮件。
    heirloom-mailx -s "磁盘健康,大吉大利" 982***604@qq.com < ${result_file}
else
    heirloom-mailx -s "警报!!磁盘警报!!!" 98***604@qq.com < ${result_file}
fi

完结撒花!



版权声明:本文为xyw19991006原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。