《懒人Shell脚本》之五——一键修改分布式系统配置文件
来源:互联网 发布:2016网络情歌对唱大全 编辑:程序博客网 时间:2024/05/17 07:19
0. 背景
分布式部署程序的时候,近20台机器部署了同样的环境进行数据采集。
当更换程序时,能否修改好一套,其他机器只需要一步scp,一步执行脚本。
一键修改配置,正是本文的目的。
1. 实现要求
1、修改*.sh的可执行权限;
2、自动获取表名称的前两个字符,相应所有文件名称统一修改;
3、修改配置文件中的mysql表名、mysql地址;
4、从其他已有填好的配置中读取并修改java程序执行的start_num, end_id值。
2. 核心脚本如下
简化版本:
[root@localhost tt_process_detail]# cat change_conf_sim.sh#需要手动修改dst_mysql_ip="10.0.1.30"processName=$(echo `pwd` | awk -F "/" '{print $4}')city_code=`echo ${processName:0:2}`find ./ -name "*.sh" | xargs chmod a+x#自动修改名称for((i=1;i<=4;i++))do mv yt_ent_p${i} ${city_code}_ent_p${i}done;#自动生成dst_table_name="${city_code}_company_info"#循环实现for((i=1;i<=4;i++))do#从旧表中获取start_num, end_id值#读取指定行的数字部分 p_begin=`sed -n 30p ../${city_code}_process/${city_code}_ent_p${i}/conf/configuration.xml | grep -o '[0-9]\+'` p_end=`sed -n 36p ../${city_code}_process/${city_code}_ent_p${i}/conf/configuration.xml | grep -o '[0-9]\+'` #将获取的旧表值写入到新表中 sed -i "30s/<value>.*<\/value>/<value>${p_begin}<\/value>/" ./${city_code}_ent_p${i}/conf/configuration.xml sed -i "36s/<value>.*<\/value>/<value>${p_end}<\/value>/" ./${city_code}_ent_p${i}/conf/configuration.xml #修改配置 sed -i "s#te_company_info#${dst_table_name}#g" ./${city_code}_ent_p${i}/conf/configuration.xml sed -i "s#10.8.5.10#${dst_mysql_ip}#g" ./${city_code}_ent_p${i}/conf/configuration.xmldone;
3. 变量嵌套变量举例
[root@localhost hz_process_detail]# cat test.sh#!/bin/bashp1_begin=11;p2_begin=22;for ((i=1;i<=2;i++))do begin=p${i}_begin eval p_begin_no=$(echo \$$begin) echo $p_begin_nodone;
4.获取ip地址的方法:
[root@localhost tt_process_detail]# cat tt_ent_p1/conf/configuration.xml | grep "jdbc" | awk -F "/" {'print $3'}10.0.1.30
4. 小结
1)能自动实现的,坚决不要手动修改。
2)20套程序,单纯手动修改,耗时近1个小时,包含排查错误、验证时间。
脚本实现,scp复制20套,各机器执行下脚本,10分钟之内搞定。
3)其中,关于shell下修改xml,stackoverflow提到xmlstarlet工具,回头研究下。
本文使用的取指定行,写指定行的取巧的方式。
2016-10-25 20:42 思于家中窗前
作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/52926943
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!
0 0
- 《懒人Shell脚本》之五——一键修改分布式系统配置文件
- 《懒人Shell脚本》之十——统计多重路径下的不同扩展名文件及个数
- 《懒人Shell脚本》之十——统计多重路径下的不同扩展名文件及个数
- 《懒人Shell脚本》之九——批量格式转换脚本实现
- 《懒人Shell脚本》之一——遍历文件并格式化输出文件
- 《懒人Shell脚本》之二——语料库的格式化输出
- 《懒人Shell脚本》之三——微博分类信息获取与格式化
- 《懒人Shell脚本》之四——日志条数动态实时统计
- 《懒人Shell脚本》之七——格式化处理数据存入数据库实现
- 《懒人Shell脚本》之八——定期备份Mysql数据库表的实现
- shell脚本之批量修改文件后缀名
- 体外诊断(POCT)之系统配置文件修改
- ubuntu 修改系统配置文件
- Shell分布式系统分发文件脚本
- Shell脚本学习——[以文件之名]
- Shell 脚本知识回顾 (五) —— Shell 循环
- Shell 脚本知识回顾 (五) —— Shell 循环
- Shell脚本 一 批量修改文件名
- Unique Binary Search Trees 问题(leetcode )
- 文章标题
- 蜂鸣器知识
- BZOJ2002: [Hnoi2010]Bounce 弹飞绵羊
- JAVA异常处理一return
- 《懒人Shell脚本》之五——一键修改分布式系统配置文件
- Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview
- 敏捷其实很简单(1)重读敏捷宣言
- JNI与NDK
- LeetCode 188 Best Time to Buy and Sell Stock IV (动态规划 推荐)
- Android ViewPager和Fragment实现顶部导航界面滑动效果
- Mathematica关于混沌摆的简单模拟
- Open CV学习记录(五)——离群点、访问图像像素、remap、resize
- 【第九周 项目1-猴子选大王(数组版)】