shell腳本批量生成配置文件


  如果管理的站點和服務器較多的情況下,每次修改配置文件都相當痛苦。因而想到了用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

  如果存在大量需要手工修改配置文件的情況下,或者批量生成一些類似的文件時可以考慮采用此種方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM