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

  1、准备模板文件webcheck.template

more webcheck.template ###################WEBURL define start###################
define service{use                             generic-service         ; Name of service template to usehost_name                       webcheckservice_description             WEBURLcheck_command           check_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]\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.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

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

shell脚本批量生成配置文件相关推荐

  1. Shell脚本-批量生成100个账号

    需求: 批量生成100个账号,使用随机密码,并且密码保存在文本中. #!/bin/bash #定义保存批量生成账号的文件 USER_FILE=./user.info if ! $USER_FILE ; ...

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

    Shell脚本批量创建用户并随机生成密码 要求:批量创建10个系统账号oldboy01-oldboy10,并设置生成密码(密码不同). 实现脚本: #!/bin/bash #Question3 for ...

  3. Tips--利用shell脚本批量提取txt文件中任意字段

    利用shell脚本批量提取txt文件中任意字段 前言 0. 一个例子 1. cat命令 2. '|'符号与'>'符号 3. grep命令 4. awk命令 前言 对于测试中出现的log,我们经常 ...

  4. 签名证书无效”-在vCenter Server Appliance 6.5 / 6.7上使用Shell脚本重新生成和替换已过期的STS证书(76719)

    "签名证书无效"-在vCenter Server Appliance 6.5 / 6.7上使用Shell脚本重新生成和替换已过期的STS证书(76719) 上次更新时间:2020/ ...

  5. shell脚本批量导出MYSQL数据库日志/按照最近N天的形式导出二进制日志[连载之构建百万访问量电子商务网站]...

    shell脚本批量导出MYSQL数据库日志/自动本地导出MYSQL二进制日志,按天备份[连载之构建百万访问量电子商务网站] 出处:http://jimmyli.blog.51cto.com/我站在巨人 ...

  6. shell脚本执行及配置文件

    linux之shell脚本执行及配置文件 bash脚本执行方法: 1 解释器直接运行/usr/bin/bash bash FOO.sh2 使用路径运行脚本(需要有x权限)chmod +x FOO.sh ...

  7. shell脚本批量追踪ip路由走向

    shell脚本批量追踪ip路由走向 需求: 有大量ip地址需要追踪路由,查看是否经过(第三跳经过)192.168.23.2,如不经过,需要显示不能经过的ip 思路: 追踪路由用traceroute - ...

  8. Shell脚本实现生成SSL自签署证书

    这篇文章主要介绍了Shell脚本实现生成SSL自签署证书,本文直接给出实现代码,代码中包含大量注释,需要的朋友可以参考下 启用 apache 的 mod_ssl 之后需要有证书才能正常运作.写了个脚本 ...

  9. python脚本批量生成数据

    在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据.如果一条条的插入数据库或者一条条的创建数据,效率未免有点低.如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家 ...

最新文章

  1. ATS无法缓存QQ音乐的音频文件问题
  2. 关于脉冲信号发生器的一点心得
  3. JS判断鼠标从哪个方向进入DIV容器
  4. 为什么 学汽修 java_这七个优势 告诉你为什么要学汽修
  5. IPFS的文件存储模式
  6. QT学习笔记:常用快捷键总结表
  7. 企业如何采用机器学习
  8. 自定义QListWidget实现item被hover时改变图标样式(模仿网易云音乐选项列表)(方法一)
  9. MP law simulation
  10. 基础知识的困惑让BUG更隐蔽
  11. 基于udp端口转发程序设计(一)
  12. 【工作笔记】从零开始学ExtJs6(四)—— 常用api小记
  13. html打包成apk wex5,WeX5打包部署学习
  14. JQuery实现表单验证并使错误数据其无法提交到数据库
  15. SpringBoot项目中遇到的问题
  16. android广告轮播无限
  17. 集赞神器!朋友圈集赞一键秒搞定!从此集赞随心所欲!
  18. 详述 IntelliJ IDEA 遇到快捷键以及删除键不好使的解决方法
  19. 算法的时间复杂度(大O表示法)
  20. 生信常用分析图形绘制03 -- 富集分析圈图

热门文章

  1. 英伟达CUDA 10终于开放下载了
  2. Oracle数据库学习(四):学习中的遇到的问题
  3. 制造-销售”模式正在消亡,传统大型企业的上云之路要如何举步?
  4. wpf listBox 多列大图片效果
  5. 刚刚看到 PNaCl, 这才是我一直期待的跨平台的好东西!
  6. 实现远程访问局域网内的多台电脑
  7. JAVASE1~5补充
  8. Exchange修改单封邮件大小命令
  9. 区块链共识机制优缺点对比都是什么
  10. 自已撸的一个小程序日历组件