Linux在线存活检测

一、 写作背景

1.1 工作环境

笔者工作与一家互联网类型工作,在内网有10台物理机搭建了VM虚拟化环境,上面搭建100+台虚拟机,采用vCenter进行集中管理,工作过程中,有部分设备死机、或其它故障引起设备无法访问,故采用一个自动执行的脚本来检测系统是否正常运行,如果没有正常运行,就自动发邮件给管理员。

1.2 系统环境

本脚本在Linux系统环境下运行CentOS Linux release 7.3.1611 (Core) Linux 3.10.0-514.26.2.el7.x86_64,通过读取相应的日志文件,输入文件,进行判断,然后根据情况发送给管理员邮件。

二、 软件环境搭建

2.1 软件安装

系统采用默认安装,具体安装方法不再赘述,网上很多。
由于要发送邮件,需要安装Sendmail、mutt,这里采用yum安装。

yum install sendmail mutt -y

启动并加入开机启动

systemctl enable --now sendmail

2.2 邮件客户端配置

修改发件客户端配置文件如下:

vim /etc/Muttrc +473
set charset="utf-8"  #设置发邮件编码
vim /etc/Muttrc +961 
set encode_from=yes
vim /etc/Muttrc +1183
set from="zhen.guo@...........com" #发送人地址
vim /etc/Muttrc +3150
set realname="机器报警" #发件人别名
vim /etc/Muttrc +3303
set rfc2047_parameters=yes #解决附件乱码问题
vim /etc/Muttrc +4555
set use_from=yes  #指定是否显示别名
···

## 三、 脚本 ##

### 3.1 脚本文件及说明 ###

```shell
#!/bin/bash
# 脚本代码
DATE='date +%F_%H:%M'    #定义时间
LOG=/root/ping.log       #定义日志路径
IP=/root/ip.txt          #定义ip列表
CLEAN='cat $LOG | wc -l  #获取日志数量
for i in $(cat $IP);     #循环读取IP列表
do                       #开始执行
    ping -c 2 $i &>/dev/null
    if [$? -eg 0 ];then
#写入日志内容到日志文件。
        echo "$Data $i Host ping is success." >> $LOG 
    else
        echo -e "Date:$DATE \nHost:$i \nProblem: Ping is failed, please check!!!" | mutt -s"Ping" xxx@xxx.com
    fi
done
#如果日志文件超过一定数量,则清空
if [$CLEAN -ge 30 ];then
    echo "" > $LOG
fi

四、 添加到任务计划

4.1 添加到任务计划

具体使用方法另文做介绍。命令如下:

crontab -e

* /5 * * * * /bin/bash /root/ping.sh #添加命令格式,最后为脚本所在路径。

4.2 重启任务计划

任务计划查看:

orntab -l

任务计划重启:

systemctl restart crond


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 long@longger.xin

文章标题:Linux在线存活检测

字数:618

本文作者:Longger

发布时间:2017-11-08, 17:01:25

最后更新:2024-11-05, 22:58:10

原始链接:https://www.longger.xin/article/1d1c2c81.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

github