背景

由于公司用了opendj的开源版本作为LDAP使用,需要监测LDAP的同步状态,并且每天发巡检日报,因此就有了如下的脚本,做了定时任务,每天自动巡检并发送邮件通知管理员查看结果,

新版实现

#!/bin/bash
#作者:朝寒
#功能: 检查opendj的同步状态,并将结果发给管理员

#设定运行目录
cd /path/to/opendj_dsreplication
source /apps/.bash_profile

#邮箱参数定义
#收件人
mail_t="xxxx@xxx.com,xxxx@xxx.com,xxxx@xxx.com"

#发件邮箱
mail_f="xxxx@xxxx.com"

#pass
mail_pass=xxxxxxxx
#邮件服务器
mail_s=mail.xxx.com
#发件用户
mail_user="xxxxxx"


#记录日期
DAYS=`date +"%Y-%m-%d"`
#时间
TIME=`date +"%Y-%m-%d %H:%M:%S"`
#初始化日志文件
echo "">ldap_dsr_test.log
echo "--------------------------------------------------------------------------">>ldap_dsr_test_log.log.$DAYS


#判断是否存在异常数据
function jiancha ()
{

/path/to/opendj/bin/dsreplication status  --port 1444 --hostname xxx.xxxx.com --adminUID admin --adminPassword $passwd --baseDN "o=user" --baseDN "o=xxxxinfo"  --trustAll --no-prompt >/path/to/opendj_dsreplication/dsr.log 2>&1 
#写入日志:
cat dsr.log >>ldap_dsr_test_log.log.$DAYS

}

#发送邮件:
function sendmail ()
{
  echo "sendemail"
  LIST=`cat dsr.log  |grep -A500 Suffix  `
  /path/to/opendj_dsreplication/sendemail/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 "各位好,截止$TIME,LDAP巡检情况如下:$LIST " >>ldap_dsr_test_log.log.$DAYS 2>&1
}


####    主函数    #############

#调用查询同步状态
jiancha


#发送邮件通知管理员:
sendmail

具体实现如下

1、定时任务,crontab.sh

功能,通过定时任务调用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

2、自动巡检同步脚本

注意,需要安装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
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐