由于公司用了opendj的开源版本作为LDAP使用,需要监测LDAP的同步状态,并且每天发巡检日报,因此就有了如下的脚本,做了定时任务,每天自动巡检并发送邮件通知管理员查看结果,
功能,通过定时任务调用expect做的OpenDJ同步状态检查脚本,查询完成后将结果通过邮件发送给管理员,每天就可以早上安逸的点开邮件然后发日报了,想做自动巡检并发日报的,但是写起来太麻烦,就算了。
#!/bin/bash
#功能: 检查opendj的状态是否正常,如果异常邮件通知管理员。
#设定运行目录
cd /data/opendj_dsreplication
source ~/.bash_profile
#邮箱参数定义
#收件人
mail_t="xxx@xxx.com,xxx@xxx.com"
#发件邮箱
mail_f="xxx@xxx.com"
#pass
mail_pass='xxxx'
#邮件服务器
mail_s=xxx.xxx.com
#发件用户
mail_user="xxxx"
#记录日期
DAYS=`date +"%Y-%m-%d"`
#时间
TIME=`date +"%Y-%m-%d %H:%M:%S"`
#初始化日志文件
echo "">c_xj.log
echo "--------------------------------------------------------------------------">>c_xj_log.log.$DAYS
#判断是否存在异常数据
function jiancha ()
{
/usr/bin/expect dsreplication.expect >./dsr.log 2>&1
#写入日志:
cat dsr.log >>c_xj_log.log.$DAYS
}
#发送邮件:
function sendmail ()
{
echo "sendemail"
LIST=`cat dsr.log |grep -A500 Suffix `
sendEmail -f ${mail_f} -s ${mail_s} -xp ${mail_pass} -xu ${mail_user} -t ${mail_t} -o message-charset=utf-8 -o tls=no -u "[sync] 每日LDAP同步巡检情况 " -m "各位好,截止$TMIE,OpenDJ巡检情况如下:$LIST " >>c_xj_log.log.$DAYS 2>&1
}
#### 主函数 #############
#调用查询同步状态
jiancha
#发送邮件通知管理员:
sendmail
注意,需要安装expect :
yum install -y expect tcl tclx tcl-devel
cat dsreplication.expect
#!/usr/bin/expect
#功能: 自动查出同步状态信息
#这使用expect 来进行替代输入,admin 为集群密码,自行修改即可。
spawn opendj/bin/dsreplication
expect {
"Enter choice:" { send "7\r";exp_continue }
"*Directory server hostname or IP address*" { send "\r";exp_continue }
"*Directory server administration port number*" { send "\r";exp_continue }
"*Global Administrator User ID*" { send "\r";exp_continue }
"Password for user*" { send "admin\r";exp_continue }
"Enter choice*" { send "\r";exp_continue }
}
expect eof