如果管理的站点和服务器较多的情况下,每次修改配置文件都相当痛苦。因而想到了用shell脚本来批量生成配置文件和配置数据。下面这个脚本是为了批量生成nagios监控配置文件的一个shell脚本程序。其原理是事先定义一个shell脚本模板,然后每个需要监控的站点复制一份模板替换掉模板文件里面的变量。
1、准备模板文件webcheck.template
more webcheck.template ###################WEBURL define start###################define service{use generic-service ; Name of service template to usehost_namewebcheckservice_description WEBURLcheck_commandcheck_webpage!-H WEBURL -u INDEXis_volatile 0max_check_attempts 3check_interval 1retry_interval 1check_period 24x7notification_interval 5notification_period 24x7notification_options w,u,r,ccontact_groups admins}###################WEBURL define end###################变量为WEBURL和INDEX
2、站点列表文件weblist.txt
复制代码 代码如下:
www.aaa.com \/
bbs.bbb.com \/
www.ccc.com \/
weblist.txt有两个field,第一个field为域名,第二个field为站点对应的url。如第一个域名为www.aaa.com/
3、批量生成脚本文件create.sh
[root@bogon webcheckes]# more create.sh #!/bin/bash PATH=/bin:$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin export PATH#echo $PATHusage () { echo -en "USAGE: $0 [web list] or $0 [template] [web list]
For example: $0 host.template host.list(Field : [WEB URL] [INDEX WEB PAGE])
" 1>&2 exit 1 }if [ $# -gt 2 ];then usage exit 1 ficase "$#" in 2) template=$1 host_list=$2 ;; 1) template="webcheck.template" host_list=$1 ;; 0) #template="webcheck.template" #host_list="host.list" usage ;; esacif [ ! -f "${template}" ];then echo "template : ${template} not exist!" 1>&2 exit 1 fiif [ ! -f "${host_list}" ];then echo "host list : ${host_list} not exist!" 1>&2 exit 1 fi#echo $PWD/${host_list}WEBTEMP="wcalltemp.txt"rm $PWD/${WEBTEMP}#cat $PWD/${host_list}/bin/cat $PWD/${host_list}| while read weburl indexdo #echo "${ip}"|grep -oP "^d{1,3}(.d{1,3}){3}$" >/dev/null 2>&1 || Field="not ip" #if [ "${Field}" = "not ip" ];then #echo "${ip} not ip!" 1>&2 #exit 1 #fi #host_cfg="${hostname}-${ip}.cfg" tmppage="webtemp.txt"cp ${template} ${tmppage} sed -i "s/WEBURL/${weburl}/g;s/INDEX/${index}/g" ${tmppage}/bin/cat ${tmppage}>>${WEBTEMP} done/bin/cat webcheck_org.template>webcheck_${host_list}.cfg/bin/cat ${WEBTEMP}>>webcheck_${host_list}.cfgrm $PWD/${WEBTEMP}/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfgservice nagios restart起作用的主要是这句,sed -i "s/WEBURL/${weburl}/g;s/INDEX/${index}/g" ${tmppage},说到底是sed命令的功劳。将weblist.txt里面的内容替换掉模板里的WEBURL和INDEX变量。
4、调用方式
复制代码 代码如下:
sh ./create.sh webcheck.template weblist.txt
或者
复制代码 代码如下:
sh ./create.sh weblist.txt
如果存在大量需要手工修改配置文件的情况下,或者批量生成一些类似的文件时可以考虑采用此种方式。