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

 更新时间:2015年07月10日 09:02:59   投稿:junjie  
这篇文章主要介绍了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

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

相关文章

  • Linux 中的gunzip命令

    Linux 中的gunzip命令

    gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz。下面通过本文给大家分享Linux 中的gunzip命令,一起看看吧
    2017-09-09
  • Cygwin下安装vim后,vim中退格键无法正常使用的解决方法

    Cygwin下安装vim后,vim中退格键无法正常使用的解决方法

    下面小编就为大家带来一篇Cygwin下安装vim后,vim中退格键无法正常使用的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Shell脚本中$符号的嵌套使用方法小结

    Shell脚本中$符号的嵌套使用方法小结

    在编写Shell脚本时,通过嵌套使用$符号,间接获取变量或表达式的值的具体方法,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2023-05-05
  • Linux Shell 脚本编程入门教程

    Linux Shell 脚本编程入门教程

    Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),Shell是用户与Linux操作系统沟通的桥梁,对本文感兴趣的朋友一起看看吧
    2015-11-11
  • Shell中的${}、##和%%使用范例

    Shell中的${}、##和%%使用范例

    这篇文章主要介绍了Shell中的${}、##和%%使用范例,本文给出了不同情况下得到的结果,需要的朋友可以参考下
    2015-04-04
  • 使用Linux shell脚本实现FTP定时执行批量下载指定文件

    使用Linux shell脚本实现FTP定时执行批量下载指定文件

    使用FTP定时批量下载指定文件的shell脚本,具体实例介绍如下所示,需要的朋友参考下吧
    2017-04-04
  • Shell AWK编程的基本介绍和使用详解

    Shell AWK编程的基本介绍和使用详解

    AWK可以看成一门独立的语言,它拥有语言的基本特征,换句话说AWK可以写出极其繁琐和复杂的程序,AWK的语法比Shell的语法还难以接收,这篇文章主要介绍了Shell AWK编程的介绍和基本使用,需要的朋友可以参考下
    2022-06-06
  • 使用find命令快速定位配置文件位置

    使用find命令快速定位配置文件位置

    大家知道在配置的时候咱们经常需要修改配置文件,甚至现在的开发就是配配配,记又记不住,每次自己查找太费时间,最近学会了一个命令-find,现在分享以下,本文以nginx为例子给大家详细介绍,对find命令定位配置文件位置相关知识感兴趣的朋友一起看看吧
    2022-12-12
  • 使用shell脚本取出服务器图片的方法

    使用shell脚本取出服务器图片的方法

    Shell 脚本(shell script),是一种为 shell 编写的脚本程序。下面通过本文给大家介绍使用shell脚本取出服务器图片的方法,需要的朋友参考下吧
    2017-12-12
  • 常用Linux Shell进阶部分小结

    常用Linux Shell进阶部分小结

    这篇文章主要介绍了常用Linux Shell进阶部分小结,欢迎收藏,随看随记,需要的朋友可以参考下
    2015-07-07

最新评论