linux下使用smtp+shell脚本实现服务器存活状态监控

简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是在Internet传输email的事实标准,
SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者,然后消息文本会
被传输。SMTP使用TCP端口25。
一、配置环境
[[email protected] ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
#查看系统环境
[[email protected] ~]# systemctl stop firewalld
#停止firewall防火墙服务
[[email protected] ~]# systemctl disable firewalld
#禁止firewall防火墙服务开机自动启动功能
[[email protected] ~]# firewall-cmd --state
not running
#查看防火墙运行状态,确认防火墙被关闭。
vi /etc/selinux/config
#SELINUX=enforcing
#SELINUXTYPE=targeted
SELINUX=disabled
:wq!
#关闭selinux,保存退出
[[email protected] ~]# setenforce 0
#临时关闭selinux,重启失效
[[email protected] ~]# getenforce
Disabled
#查看selinux状态,确认已关闭
二、下载软件,并安装相关依赖的perl组件
[[email protected] ~]# yum -y install perl-Net-SSLeay perl-IO-Socket-SSL
#安装依赖
[[email protected] ~]# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
#下载安装包
[[email protected] ~]# tar -zxf sendEmail-v1.560.tar.gz
#解压安装包
[[email protected] ~]# cd sendEmail-v1.56/
[[email protected] sendEmail-v1.56]# ls
CHANGELOG README README-BR.txt sendEmail sendEmail.pl TODO
#进入目录sendEmail-v1.56/
[[email protected] sendEmail-v1.56]# cp sendEmail /usr/local/bin/sendEmail
[[email protected] sendEmail-v1.56]# chown root:root /usr/local/bin/sendEmail
[[email protected] sendEmail-v1.56]# ll /usr/local/bin/sendEmail
-rwxr-xr-x 1 root root 80183 Jul 31 15:14 /usr/local/bin/sendEmail
#将sendEmail复制到执行目录/usr/local/bin/下,并赋予root用户权限、属组权限
三、创建脚本并赋予脚本执行权限
[[email protected] ~]# cd
[[email protected] ~]# pwd
/root
#返回/root
[[email protected] ~]# vim mail.sh
#!/bin/bash
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail -o tls=auto -f ******@qq.com -t "$to" -s smtp.qq.com -u "$subject"
-o message-content-type=html -o message-charset=utf8 -xu ******@qq.com -xp ****** -m "$body"
#脚本中 -f ********@qq.com表示发件人邮箱,-s smtp.qq.com 表示邮件的smtp服务器
#本文中使用腾讯qq邮箱,使用其他邮箱服务器需要修改
# -xu ********@qq.com 表示发件人邮箱的用户名,-xp ********表示邮件协议授权密钥
[[email protected] ~]# chmod +x mail.sh
#执行脚本测试发送邮件
[[email protected] ~]# ./mail.sh [email protected] test 123
test
发件人:**<********@qq.com>
时 间:2019年9月12日(星期四) 下午3:50 (UTC+0:00 伦敦、都柏林、里斯本时间)
收件人:** <********@qq.com>
123
#收到的测试邮件
四、常见问题及处理:
1、当进行邮件测试时,出现invalid SSL_version ******/IO/Socket/SSL.pm line 444这样的报错时,
原因是sendEmail软件和perl里面的SSL版本不兼容导致,通过修改/usr/local/bin/sendEmail文件第
1906行,不指定SSL版本,原始文件为 if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version
=> ‘SSLv3 TLSv1‘)) { 更改后为 if (! IO::Socket::SSL->start_SSL($SERVER)) {
2、当进行邮件测试,出现ERROR => SMTP-AUTH: Authentication to smtp.qq.com:25 failed这样
的报错时,原因是邮箱要求使用第三方客户端发送邮件是必须使用授权码登录的,使用帐号密码验证时,授
权码需要登录邮箱设置中查找,有些邮件服务器需要先开启POP3服务。
五、编写shell脚本进行服务器在线状态监控
[[email protected] ~]# vim CheckNetwork.sh
#!/bin/bash
tt1=172.20.220.20
#定义服务器一
tt2=172.20.11.1
#定义服务器二
while true
#while(true)是一个无穷循环语句
#我们必须在他的循环语句内部加入一个判断,当他达到了什么要求就会跳出
do
ping -c 5 $tt1 >/dev/null
#用ping命令来探测远程机是否存活
if [ $? -eq 0 ];then
#shell脚本中$?是指上一次命令执行的成功或者失败的状态。如果成功就是0,失败为1。
#语句if [ $? -eq 0 ] 是判断if语句的上一个命令执行如果失败就执行if中的语句,否则就执行else中的内容。

echo `date +%F-%T` " $tt1 is yes" >> ip_yes.txt
#追加当前时间和服务器IP is yes 到ip_yes.txt,此处ip_yes.txt用做正确日志文件
else
echo `date +%F-%T` " $tt1 is Error" >> ip_no.txt
#追加当前时间和服务器IP is Error到ip_no.txt,此处ip_no.txt用做错误日志文件
/root/mail.sh ********@qq.com 服务器错误 `date +%F-%T`----"爱普 $tt1 is Error"
/root/mail.sh ********@qq.com 服务器错误 `date +%F-%T`----"爱普 $tt1 is Error"
/root/mail.sh ********@sunplusapp.com 服务器错误 `date +%F-%T`----"爱普 $tt1 is Error"
/root/mail.sh ********@sunplusapp.com 服务器错误 `date +%F-%T`----"爱普 $tt1 is Error"
#发送邮件给以上的邮件地址
sleep 5
#休眠5秒
fi
ping -c 5 $tt2 >/dev/null
if [ $? -eq 0 ];then
echo `date +%F-%T` " $tt2 is yes" >> ip_yes.txt
else
echo `date +%F-%T` " $tt2 is Error" >> ip_no.txt
/root/mail.sh ********@qq.com 服务器错误 `date +%F-%T`----"益辉 $tt2 is Error"
/root/mail.sh ********@qq.com 服务器错误 `date +%F-%T`----"益辉 $tt2 is Error"
/root/mail.sh ********@sunplusapp.com 服务器错误 `date +%F-%T`----"益辉 $tt2 is Error"
/root/mail.sh ********@sunplusapp.com 服务器错误 `date +%F-%T`----"益辉 $tt2 is Error"
sleep 5
fi
kill -9 `ps aux | grep CheckNetwork | grep -v grep | awk ‘{print $2}‘`
#执行脚本后,杀死此脚本的进程,防止重复执行脚本。
done
[[email protected] ~]# crontab -l
*/15 8-18 * * * /usr/bin/bash /root/CheckNetwork.sh
#设置定时任务,8点到18点每15分钟执行CheckNetwork.sh。(时间请根据需求设定)
下面为报警邮件信息
服务器错误
发件人:** <********@qq.com>
时 间:2019年9月12日(星期四) 下午4:45 (UTC+0:00 伦敦、都柏林、里斯本时间)
收件人:** <********@qq.com>
2019-09-12-12:45:19----益辉 172.20.11.1 is Error
以上就是使用stmp+shell实现简单的服务器存活状态监控。
博主小白,欢迎各位指出不足和改进意见,感谢观看。

原文地址:https://blog.51cto.com/14015577/2437723

时间: 2024-10-21 19:44:53

linux下使用smtp+shell脚本实现服务器存活状态监控的相关文章

linux 下RMAN备份shell脚本

RMAN备份对于Oracle数据库的备份与恢复简单易用,成本低廉.对于使用非catalog方式而言,将RMAN脚本嵌入到shell脚本,然后再通过crontab来实现中小型数据库数据库备份无疑是首选.本文提供了一个简单易用的基于linux shell下的RMAN备份脚本供参考.大家可根据自己的需要进行适当调整. RMAN备份相关方面的知识较多,可以参考:    RMAN 概述及其体系结构    RMAN 配置.监控与管理    RMAN 备份详解    RMAN 还原与恢复    RMAN ca

Linux下如何执行Shell脚本

Linux下你可以有两种方式执行Shell脚本: 1.用shell程序执行脚本:根据你的shell脚本的类型,选择shell程序,常用的有sh,bash,tcsh等(一般来说第一行#!/bin/bash里面指明了shell类型的,比如#!/bin/bash指明是bash,#!/bin/sh则是sh):然后输入命令(其中bash为shell的名称,myshell.sh则为你要执行的代码): bash myshell.sh 2.直接执行脚本: 不过首先的加上可执行权限(也许要root权限,4情况而定

linux下设置SMTP服务器并用mail命令发送邮件精解

在linux下设置SMTP服务器并用mail命令发邮件精解步骤: 1.vi /etc/mail.rc 在末尾追加如下内容: set [email protected]    //默认对外发送邮件的用户邮箱地址set smtp=smtp.domain.com    //选用默认发送邮件的公共邮件域名set [email protected]    //默认对外发邮件的用户set smtp-auth-password=password    //对应默认用户的密码set smtp-auth=logi

Windows 和 Linux 中的换行与回车的区别,Windows下编写的Shell脚本,直接放到linux/unix下执行会报错

首先: CR(Carriage Return)表示回车 LF(Line Feed)表示换行 Dos和Windows采用回车+换行(CR+LF)表示下一行而UNIX/Linux采用换行符(LF)表示下一行苹果机(MAC OS系统)则采用回车符(CR)表示下一行 Windows下编写的Shell脚本,直接放到linux/unix下执行会报错,就是因为行结束符不一样导致的. 现在好多文本工具都提供了转换功能,如我常用的,也是最强大的工具 (个人感受,不是打广告):notepad++. 原文地址:htt

&lt;&lt;linux命令行与shell脚本编程大全&gt;&gt;学习笔记(1)

一章初识linux shell 一.什么是linux 1.linux系统可大致划分为四部分: l Linux内核 l GNU工具组件 l 图形化桌面环境 l 应用软件 在linux系统里,这四部分中的每一部分都扮演着一个特别的角色,但如果将他们分开,每一部分都没太大的作用. 1)探究linux内核 Linux系统的核心是内核,内核控制着计算机系统上的所有硬件和软件,必要时分配硬件,有时需要执行软件. 内核基本负责以下四项主要功能: l 系统内存管理 l 软件程序管理 l 硬件设备管理 l 文件系

Linux下使用curlftpfs挂载远程FTP服务器

步骤: 1,前提你得有一个FTP的服务器,账户,密码 2,安装curlftpfs 工具 3,挂载 4,乱码问题解决 5,遍历FTP 6,在里面找你想要的信息 废话不多说,开始搞! 1,发现FTP文件服务器 无意在网上看到一个ftp,大概看了一下,里面的信息有点意思 FTP地址:ftp://ftp1.linuxidc.com 用户名:ftp1.linuxidc.com 密码:www.linuxidc.com 2,安装工具,一键完成,没什么要说的 apt-get -y install curlftp

Linux下搭建无人执守安装服务器

Linux下搭建无人执守安装服务器 实验概述 原理和概念: 1:什么是PXE ? 严格来说,PXE 并不是一种安装方式,而是一种引导的方式.进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client.PXE (Pre-bootExecution Environment)协议使计算机可以通过网络启动. 网卡中必须有PXE芯片 协议分为client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BI

Linux下设置定期执行脚本

下面针对的是非ubuntu环境,会在文章末尾介绍ubuntu的一些区别. 在Linux下,经常需要定期的执行一些脚本从而来实现一些功能. 在Linux下我们用crontab来实现定期的执行脚本这个功能,下面就介绍一下crontab的使用.以及我遇到的一些问题 一. crontab的使用说明 1. crond 是linux用来定期执行程序的命令.当安装完成操作系统之后,默认便会启动此任务调度命令.crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作.而linux任

linux下的php网站放到Windows服务器IIS下导入 .htaccess文件伪静态规则转换 (wordpress)

需要特别注意的是: 1. .htacdess文件在 wordpress中 是可以生成的 安装 WP Super Cache后,开启该插件>>设置>>高级>>找到并点击"更新Mod_Rewrite 规则"按钮,这是会在网站根目录生成 .htaccess文件 将该文件导入到iis中的 url重写模块即可 2. 针对图片脚本样式文件报404的错误,可以通过以下规则 直接过忽略掉 <rule name="jpgtest" stopP