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

[[email protected] 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

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

时间: 2025-01-06 12:28:40

shell脚本批量生成配置文件的相关文章

Shell脚本批量创建用户并随机生成密码

要求:批量创建10个系统账号oldboy01-oldboy10,并设置生成密码(密码不同). 实现脚本: #!/bin/bash #Question3 for i in $(seq -w 10) do         useradd -s /bin/bash oldboy$i         echo "password$i" | md5sum | tee -a passwd.txt | passwd --stdin  oldboy$i done 脚本执行效果: [[email pro

自动化运维Ansible批量部署服务+shell脚本批量推送公钥

一.概述分析 由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统方式进行维护会使得工作效率低下.这时,部署自动化运维就可以尽可能安全.高效地完成这些工作.一般会把自动化运维工具划分为两类:一类是需要使用代理工具的,也就是基于专用的ABem程序来完成管理功能,如: Puppet.Func. Zabbix等:另外一类是不需要配置代理工具的,可以直接基于SSH服务来完成管理功能,如: Ansible. Fabric等. - 下面介绍几款功能类似的自动化运

在脚本中生成配置文件

其实是个输入输出重定向的简单应用, cat >> /tmp/example.conf << EOF >Input at here >You can enter multiple lines >And script is end of EOF like below >EOF 输出重定向到某配置文件,配置文件的内容来自输入重定向 << 表示此处即文件,而非类似于>>的追加功能. << 后面的内容表示输入的结束符,一般用END或

Linux系统编写shell脚本批量创建和删除用户

一.编写shell脚本批量添加用户 实现方法:判断用户是否存在,存在则返回错误提示,同时判断用户文件是否存在,不存在则退出 1.创建添加用户脚本 [[email protected] ~]# vim useradd.sh #!/bin/bashif [ $# -eq 0 ];then        echo "你没有输入任何文件!"        exit 1fi if [ ! -f $1 ];then        echo "输入有误!"        exit

shell脚本执行及配置文件

linux之shell脚本执行及配置文件 bash脚本执行方法:     1 解释器直接运行         /usr/bin/bash bash FOO.sh     2 使用路径运行脚本(需要有x权限)         chmod +x FOO.sh         /PATH/TO/FOO.sh     3 使用.或source命令执行脚本         . /PATH/TO/FOO.sh         source /PATH/TO/FOO.sh     1,2执行方法和3执行方法的

shell脚本批量部署ssh

日常运维工作中,需要给几十上百台服务器批量部署软件或者是重启服务器等操作, 这样大量重复性的工作一定很苦恼,本文给大家提供了最基本的批量操作的方法,虽然效率不高,对于初学者来说还是好理解.由于刚开始学习写脚本,什么 puppt这样的高级工具还不会使用,就简单的利用shell脚本.ssh-keygen.expect来实现.希望能给各位带来帮助,不足之处还请留言 指出,大家共同进步. 首先,需要检查expect是否安装:rpm -qa|grep expect 然后,在操作机上创建公钥:ssh-key

shell脚本-批量telnet

由于现网有时候要测试很多端口的连通性,所以就写了个小脚本,实现批量测试 将telnet成功的写入到telnet_alive.txt中,失败则写入telnet_die.txt中 #!/bin/bash#this script test UP to other host.#Iplist=/opt/script_test/iplist.dataPortnumber=7001for ip in $(cat iplist.data)do  (sleep 1;)|telnet  $ip $Portnumbe

python脚本批量生成数据

在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据.如果一条条的插入数据库或者一条条的创建数据,效率未免有点低.如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家介绍一种方法,很简单的也很实用.思路是用python代码写一段小程序,生成一定数量的SQL语句,再把这些SQL语句拷贝黏贴到数据库工具执行SQL即可. 假如有个联系人的学生表student,其表结构为姓名name.学校school.电话telphone.邮箱email. 以Mysq为例子,sql语句

利用shell脚本批量修改表

最近公司里因为开发新功能,程序员需要快速在某一个库里的所有表添加字段,于是就用shell脚本简单快速实现批量修改表添加字段 #!/bin/bash export mysql_bin=/usr/local/mysql/bin export database=database export tables=`$mysql_bin/mysql -Bse "use ${database};show tables;"` for i in ${tables}         do