首先编写messages.sh
如果是yum安装的nagios,cd /usr/lib64/nagios/plugins/
编译安装的话,就cd /usr/local/nagios/libexec
内容如下:
#! /bin/bash
LOGFILE="/usr/local/nagios/var/sms_send_.log" #定义发送短信的日志信息 文件
:>>"$LOGFILE"
exec 1>>"$LOGFILE"
exec 2>&1
#Uid="luyuanz" #接口的用户名,这个使用接口时对方会提供,我这里的test是随意写的
#Key="Tcl123456" #接口的用户名,这个使用接口时对方会提供,我这里的test是随意写的
MOBILE_NUMBER=$1 # 接受短信的手机号码
CURL="/usr/bin/curl"
TIMEOUT=5
MESSAGE_ENCODE=$(echo $(/usr/local/php/bin/php -r "echo urlencode(\"$2\");"; ) ) #这里的$2是nagios发送短信的第二个变量,即发送的内容
#URL="http://192.168.1.252:8083/common/SendSM/?userCode=${Uid}&userPass=${Key}&DesNo=${MOBILE_NUMBER}&Msg=${MESSAGE_ENCODE}&Channel=0"
#我这里的URL是胡乱写的,我不可能暴漏自己公司的接口哈,但是格式大体是这样的,到时候接口方会提供URL的格式的,你可以问你们自己公司负责短信接口的(这边是需要用户名和密码)
# Send it
URL="http://192.168.1.252:8083/common/send?mobile=${MOBILE_NUMBER}&content=${MESSAGE_ENCODE}"
set -x
DATE=`date +%T" "%F`
echo $DATE
${CURL} -s --connect-timeout ${TIMEOUT} "${URL}"
#/usr/bin/curl "${URL}"
最后可以通过检测 bash messages.sh "186********" "内容",如果没收到信息,查看sms_send_.log日志。
然后在/usr/local/nagios/etc/objects/commands.cfg添加一下内容
define command {
command_name notify-host-by-sms
command_line messages.sh $CONTACTPAGER$ "$HOSTNAME$ $HOSTSTATE$ $SHORTDATETIME$"
}
define command {
command_name notify-service-by-sms
command_line messages.sh $CONTACTPAGER$ "$SERVICESTATE$ $SERVICEOUTPUT$ $HOSTALIAS$/$SERVICEDESC$ $SHORTDATETIME$"
}
接着编写vim /usr/local/nagios/etc/objects/contacts.cfg
添加内容如下:
define contact{
contact_name quotaadmin
use generic-contact
alias Nagios Admin
email wangzai@****.cn
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r,f,s
host_notification_options d,u,r,f,s
service_notification_commands notify-service-by-email,notify-service-by-sms
host_notification_commands notify-host-by-email,notify-host-by-sms
pager 186******** (多个用逗号相隔)
}
define contactgroup{
contactgroup_name quotaadmins
alias web Administrators
members quotaadmin
}
最后重启service nagios restart