当前位置: 移动技术网 > 网络运营>服务器>Linux > Shell脚本实现批量生成nagios配置文件

Shell脚本实现批量生成nagios配置文件

2017年12月12日  | 移动技术网网络运营  | 我要评论
如果管理的站点和服务器较多的情况下,每次修改配置文件都相当痛苦。因而想到了用shell脚本来批量生成配置文件和配置数据。下面这个脚本是为了批量生成nagios监控配置文件的

如果管理的站点和服务器较多的情况下,每次修改配置文件都相当痛苦。因而想到了用shell脚本来批量生成配置文件和配置数据。下面这个脚本是为了批量生成nagios监控配置文件的一个shell脚本程序。其原理是事先定义一个shell脚本模板,然后每个需要监控的站点复制一份模板替换掉模板文件里面的变量。

1、准备模板文件webcheck.template

more webcheck.template 

###################weburl define start###################
define service{
    use               generic-service     ; name of service template to use
    host_name            webcheck
    service_description       weburl
    check_command      check_webpage!-h weburl -u index
    is_volatile 0
    max_check_attempts 3
    check_interval 1
    retry_interval 1
    check_period 24x7
    notification_interval 5
    notification_period 24x7
    notification_options w,u,r,c
    contact_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 $path

usage () { 
    echo -en "usage: $0 [web list] or $0 [template] [web list]\nfor example: $0 host.template host.list(field : [web url] [index web page])\n" 1>&2 
    exit 1 
} 
 
if [ $# -gt 2 ];then 
    usage 
    exit 1 
fi 
 
case "$#" in 
    2) 
        template=$1 
        host_list=$2 
    ;; 
    1) 
        template='webcheck.template' 
        host_list=$1 
    ;; 
    0) 
    #    template='webcheck.template' 
    #    host_list='host.list' 
        usage 
    ;; 
esac 
 
if [ ! -f "${template}" ];then 
    echo "template : ${template} not exist!" 1>&2 
    exit 1 
fi 
 
if [ ! -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 index
do 
    #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}.cfg
rm $pwd/${webtemp}

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

service 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

  如果存在大量需要手工修改配置文件的情况下,或者批量生成一些类似的文件时可以考虑采用此种方式。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网