一个生产的shell脚本

#!/bin/bash
#Created: 2017.07.21
#Author: molewan
#Description: help ERP app upgrade 
###########################################################脚本说明###########################################################
#a、将需要添加的数据内容拷贝到/root/$DBID.txt文件中,例如DBID为1722,保存的文件,文件名就配置为1722.txt(手动操作)
#b、从/root/$DBID.txt文件中,筛选出jdbc的信息-->$OLD_DBID_JDBC_URL
#c、从/www/erp/tomcat/$DBID/conf/Catalina/localhost文件中,例如w$DBID.xml文件中筛选出jdbc的信息-->$DBID_REPORTCONFIG_DIR/$NEW_DBID_JDBC_URL
#d、替换/root/$DBID.txt中的数据库用户名,数据库密码以及jdbc的内容,并附加修改后的/root/$DBID.txt内容到reportConfig.xml
#e、删除$DBID_DIR/w$DBID.xml中Resource相关的字段对
#f、脚本执行方法:/bin/bash $0 $1   (其中$0为脚本的名称,$1为DBID的数字,例如:/bin/bash /shells/help.sh 1722)
###########################################################脚本说明###########################################################

# 1、定义变量
DBID=$1
DBID_DIR=/www/erp/tomcat/$DBID/conf/Catalina/localhost
DBID_REPORTCONFIG_DIR=/www/erp/tomcat/$DBID/webapps/w$DBID/WEB-INF
OLD_DBID_JDBC_URL=$(grep "jdbc:sqlserver" /root/$DBID.txt |awk -F";" ‘{print $1";"$2}‘)
NEW_DBID_JDBC_URL=$(grep ‘jdbc:sqlserver‘ $DBID_DIR/w$DBID.xml|awk -F‘"‘ ‘{print $2}‘)
OLD_PASSWORD=$(grep "<password>" /root/$DBID.txt |awk -F"<password>" ‘{print $2}‘|awk -F"</password>" ‘{print $1}‘)

# 2、脚本使用方式定义
if [ "$#" -ne "1" ];then
echo "usage: /bin/bash $0 $DBID"
exit 1
fi

# 3、备份配置文件
echo "<----------------------------------开始备份配置---------------------------------->"
cp /root/$DBID.txt /root/$DBID.txt.org
if [ $? -eq 0 ];then
echo "备份$DBID.txt成功"
else
echo "请检查$DBID.txt的备份"
exit 1
fi
cp $DBID_DIR/w$DBID.xml $DBID_DIR/w$DBID.xml.org
if [ $? -eq 0 ];then
echo "备份$DBID_DIR/w$DBID.xml成功"
else
echo "请检查$DBID_DIR/w$DBID.xml的备份"
exit 1
fi
cp $DBID_REPORTCONFIG_DIR/reportConfig.xml $DBID_REPORTCONFIG_DIR/reportConfig.xml.org
if [ $? -eq 0 ];then
echo "备份$DBID_REPORTCONFIG_DIR/reportConfig.xml成功"
else
echo "请检查$DBID_REPORTCONFIG_DIR/reportConfig.xml的备份"
exit 1
fi

# 4、替换/root/$DBID.txt的三部分(数据库用户名,数据库密码以及jdbc的内容)
##a、修改/root/$DBID.txt中数据库账号:
echo "<----------------------------------开始替换账户---------------------------------->"
sed -i ‘s/sa/bysa/g‘ /root/$DBID.txt
if [ $? -eq 0 ];then
echo "替换账户成功"
else
echo "替换账号失败"
exit 1
fi
# #替换2:修改数据库密码(由于我们设置的数据库是统一的,我就没配置变量)
echo "<----------------------------------开始密码替换---------------------------------->"
sed -i ‘s/‘$OLD_PASSWORD‘/88***88/g‘ /root/$DBID.txt
if [ $? -eq 0 ];then
echo "密码替换成功"
else
echo "密码替换失败"
exit 1
fi
## 替换3: 修改截取的jdbc
echo "<----------------------------------开始jdbc替换---------------------------------->"
sed -i "s#${OLD_DBID_JDBC_URL}#${NEW_DBID_JDBC_URL}#g" /root/$DBID.txt
if [ $? -eq 0 ];then
echo "替换jdbc成功"
else
echo "替换jdbc失败"
exit 1
fi

# 5、追加拷贝的内容到reportConfig.xml文件中
echo "<----------------------------------开始追加文件---------------------------------->"
cat /root/$DBID.txt>>$DBID_REPORTCONFIG_DIR/reportConfig.xml
if [ $? -eq 0 ];then
echo "add file successful"
else
echo "please retry"
exit 1
fi

# 6、删除配置文件中Resource相关的字段
echo "<----------------------------------开始修改配置---------------------------------->"
sed -i ‘/\<Resource/,/\/>$/d‘  $DBID_DIR/w$DBID.xml
if [ $? -eq 0 ];then
echo "delete resouce OK"
else
echo "please check"
exit 1
fi
时间: 2024-10-19 17:09:25

一个生产的shell脚本的相关文章

Linux生产服务器Shell脚本分享

Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来完成工作呢?其实相对于PHP这些开发语言而言,shell主要用于数据库备份(SVN备份).计划任务(crontab).服务状态监控.FTP远程备份等.对于这些任务,shell的强大是大家都公认的,这也是每一个Linux/unix系统管理员的基本之一.现在在Windows 2008里也出现了Power

一个简单的shell脚本

一个简单的shell脚本 编写 假设我想知道目前系统上有多少人登录,使用who命令可以告诉你现在系统有谁登录: 1.[[email protected] ~]$ who2.KANO tty1 2016-02-15 01:47 (:0)3.KANO pts/0 2016-02-15 01:48 (kelvin) 当然在个人电脑上,所列出来的列表可能只有上面这么短.但是在一些大型.多用户的系统上,所列出的列表就可能很长.这个时候我们可以使用自动计算用户总数.wc是一个字数计算程序,它可以计算出行数(

一个简单的shell脚本-----实现虚拟机实验环境的简单配置

亲自写过shell脚本后才发现,这玩意真是太方便了,当你想把一些琐碎的.细节性的小指令一次性来完成时,脚本无疑是最好的选择,方便.快捷,关键是真是懒人必备啊. 由于安装的centos6.5是最小化安装,且是实验环境,即安装在vmware workstations上面,在首次安装完成后,配置完IP地址的相关信息后,就做了一个初始的快照,以便下次实验完后,可以通过快照快速还原系统. 但是由于实验环境的要求,例如防火墙.SELinux.光盘挂载.yum源配置等,都是最常需要修改的选项,并且由于最小化安

一个不错的shell 脚本教程 入门级

建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用.所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行).  如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit.kedit.emacs.vi  等来编写我们的shell程序.  程序必须以下面的行开始(必须方在文件的第一行): #

自动化运维:(3)写一个简单的Shell脚本(案例)

一.需求 1.test.sh 脚本执行时候需要添加参数才能执行 参数和功能详情如下: 参数 执行效果 start 启动中... stop 关闭中... restart 重启中... * 脚本帮助信息... 2.参数的数量有限制,只能是1个,多余一个会提示脚本的帮助信息 3.帮助信息使用函数来实现 信息内容:脚本 test.sh 使用方式: test.sh [ start|stop|restart ] 二.知识点分析 1.zonghe.sh 脚本执行时候需要添加参数才能执行 脚本传参.case语句

企业生产环境shell脚本案例分享

1)Mysql数据库备份脚本(完整备份+异地备份) 一般Mysql数据库备份会采用在MYSQL从库上执行全量备份+增量备份方式.在从库备份避免Mysql主库备份的时候锁表造成业务影响. #!/bin/bash set -e #当脚本有错误时,便停止执行脚本 #备份的数据库名 DATABASES=( "magedu01" "magedu02" ) USER="root" PASSWORD="dbpwd123" MAIL=&quo

一个jboss启动shell脚本

脚本1: #!/bin/sh # [email protected] #JBOSS_HOME JBOSS_HOME="/opt/app/jboss-eap-6.3" JAVAPTH="/opt/app/jdk1.7.0/bin" case "$1" in start) echo "Starting JBoss EAP-6.3.0..." export RUN_CONF=${JBOSS_HOME}/bin/standalone.

一个有用的shell脚本

#!/bin/bash #if [ $1 -eq null ]; then # echo "please input params1!" # exit #fi #if [ $2 -eq null ]; then # echo "please input params2!" # exit #fi # type , $1 { scp, ssh }, src $2, dst $3 user=hadoop if [ "$3" != ""

如何在linux Shell脚本里面把一个数组传递到awk内部进行处理

前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分享. 测试环境: [root]# head -1 /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (Santiago) [root]# awk --version | head -1 GNU Awk 3.1.7 众所周知