0755mx 发表于 2019-1-17 09:01:17

nagios使用gmail发送邮件 取mysql数据库的字段并邮件通知

sendEmail使用tls发送邮件
开始使用nagios时对于perl不太了解,在搜索到sendEmail后,这款工具使用相同的简单
./sendEmail -f 发送邮件地址 -t 接收邮件地址 -s 发送邮件的SMTP服务地址 -u 标题 -xu 用户名 -xp 用户密码 m 发送内容 ;现在开始学习使用perl相关知识了,了解相关perl模块安装后开始着手使用gmail免费邮发送邮件,因为gmail免费邮都是使用ssl加密的,发送时需带-o tls=yes 选项都知道是是使用ssl了就选择yes了,其它免费邮如tom,126的好像不行
./sendEmail -f mlnagios@gmail.com -t qwujhq@126.com -u "this is title" -m "this is my first to mail you "-s smtp.gmail.com -xu mlnagios -xp 34 -o tls=yes
如果在此系统你未安装过perl模块,会报
Jul 17 01:25:35 localhost sendEmail: ERROR => No TLS support!SendEmail can't load required libraries. (try installing Net::SSLeay and IO::Socket::SSL)
这个错误,下面来动手安装下perl相关模块吧,我这里讲是利用cpan下载相关模块然后把模块放到相关perl路径下安装,当然你也可以在第一次使用cpan时设定cpan的路径,我这人比较懒,一路回车过去了,因为我这里只是想要这两个包传到别的地方去安装。
# perl -MCPAN -e shell
使用这个命令进入cpan
进入后使用h查看帮助
cpan> h

Display Information
commandargument          description
a,b,d,mWORD or /REGEXP/about authors, bundles, distributions, modules
i      WORD or /REGEXP/about anything of above
r      NONE            reinstall recommendations
ls       AUTHOR            about files in the author's directory

Download, Test, Make, Install...
get                        download
make                     make (implies get)
test      MODULES,         make test (implies make)
install   DISTS, BUNDLES   make install (implies test)
clean                      make clean
look                     open subshell in these dists' directories
readme                     display these dists' README files

Other
h,?         display this menu       ! perl-code   eval a perl command
o conf set and query options   q             quit the cpan shell
reload cpan   load CPAN.pm again      reload indexload newer indices
autobundle    Snapshot                force cmd   unconditionally do cmd

使用get下载相关模块
cpan> getNet::SSLeay
cpan> get IO::Socket::SSL
下载完成后会提示你下载在哪个目录下
我这个是下好了再次使用下载命令时会提示你已经在下载目录下有了
cpan> get IO::Socket::SSL
CPAN: Storable loaded ok
Going to read /root/.cpan/Metadata
Database was generated on Tue, 28 Jul 2009 00:27:00 GMT
Running get for module IO::Socket::SSL
CPAN: Digest::MD5 loaded ok
Checksum for /root/.cpan/sources/authors/id/S/SU/SULLR/IO-Socket-SSL-1.27.tar.gz ok
进入相关目录查看
# cd /root/.cpan/sources/authors/id/S/SU/SULLR/
# ls
CHECKSUMSIO-Socket-SSL-1.27.tar.gz
好了,两包都下好了,把相关传你想在哪台机器上实现发mail功能
找到perl安装模块的路径
我这里是/usr/lib/perl5/5.8.5/
这些模块的安装就比较简单了,使用more查看安装帮助
# more README
这是Net::SSLeay的后面perldoc应该可以明白吧
         ./Makefile.PL -t   # builds and tests it
         make install         # You probably have to su to root to do this
         perldoc Net::SSLeay# optional, but highly recommended
         perldoc Net::SSLeay::Handle

这个安装IO::Socket::SSL的

         perl Makefile.PL
         make
         make test
         make install

# ./Makefile.PL -t
Cannot determine perl version info from lib/Net/SSLeay.pm
Cannot determine license info from lib/Net/SSLeay.pm
*** Found OpenSSL-0.9.7a installed in /usr
*** Be sure to use the same compiler and options to compile your OpenSSL, perl,
    and Net::SSLeay. Mixing and matching compilers is not supported.
Do you want to run external tests?
These tests *will* *fail* if you do not have network connectivity. y
Writing Makefile for Net::SSLeay
# make install
进入放置sendEmail程序的目录
# pwd
/root/sendEmail-v1.55
# ./sendEmail -f mlnagios@gmail.com -t qwujhq@126.com -u "this is title" -m "this is my first to mail you "-s smtp.gmail.com -xu mlnagios -xp 1234 -o tls=yes
Jul 21 13:17:04 localhost sendEmail: Email was sent successfully!
好了邮件发送成功
# 'notify-host-by-email' command definition
define command{
      command_name    notify-host-by-email
      command_line   /usr/local/bin/sendEmail/sendEmail -f mlnagios@gmail.com -t $CONTACTEMAIL$-s smtp.gmail.com -xu mlnagios -xp 34 -o tls=yes -u "****** Nagios ******" -m " ** $NOTIFICATIONTYPE$ Service Alert: $HOSTNAME$/$HOSTADDRESS$is $HOSTSTATE$ at \n\nDate/Time: $LONGDATETIME$ Additional Info:$HOSTOUTPUT$"
      }

# 'notify-service-by-email' command definition
define command{
      command_name    notify-service-by-email
      command_line   /usr/local/bin/sendEmail/sendEmail -f mlnagios@gmail.com -t $CONTACTEMAIL$-s smtp.gmail.com -xu mlnagios -xp 34 -o tls=yes-u " ****** Nagios ****** " -m " ** $NOTIFICATIONTYPE$ Service Alert: $HOSTNAME$/$HOSTADDRESS$ $SERVICEDESC$ is $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$ Additional Info:$SERVICEOUTPUT$ $CONTACTPAGER$"
      }

数据库相关字段通知脚本,如下取得数据库相关脚本,然后发邮件通知相关联系人
#!/bin/bash
#get the database field
field=`mysql -uroot --password=xxxxxx
页: [1]
查看完整版本: nagios使用gmail发送邮件 取mysql数据库的字段并邮件通知