Linux脚本-使用jar自动替换配置文件
背景
最近公司需要在生产服务器上测试字库,需要非常频繁修改配置文件中的字体相关属性,然后实时调试,所以需要频繁的修改配置文件并手动发布出去。之前需要修改配置文件时,我们需要:
- 把jar包通过FTP传回本地电脑
- 把新配置文件,压缩进jar包替换老配置文件
- 再把jar包通过ftp传回服务器
今天偶然发现的jar命令,可以实现替换配置文件,就写了个脚本,专门用来替换配置文件。
经过优化,只需要把待替换的文件通过ftp传入远程服务器,就可以实现一键替换了。
脚本
目前实现了,传入新配置文件绝对路径,和源jar包绝对地址,自动更新替换旧的配置文件的功能。
#! /bin/bash
#新文件完整路径
newfile_addr=$1
#带替换jar包完整路径
orijar=$2
#判断操作类型
echo "更新文件操作"
#获取文件名
filename=`echo "$1" | awk -F '[/]' '{print $NF}'`
#根据文件名找文件
jar -tvf $2 | grep "$filename" > /tmp/$filename
count=`wc /tmp/application-verify.properties | awk -F '[ ]' '{print 1F}'`
if [ $count -eq 1 ];then
echo "找到一个路径开始处理!"
#获取文件夹路径
dir=$(dirname $(head -n 1 /tmp/$filename | awk -F '[ ]' '{print $NF}'))
echo "待查找文件路径!$dir"
#进入jar包所在文件夹,构建文件目录
orijaraddr=`echo $(dirname $2)`
echo "原jar包路径!$orijaraddr"
cd $orijaraddr
if [ -d $dir ]; then
echo "$dir已经存在,先删除!"
rm -rf $dir
fi
mkdir -p $dir
cp $newfile_addr $orijaraddr/$dir
jar -uvf $2 $dir/$filename
echo "更新成功!"
else
echo "路径个数异常,无法处理,$count"
return
fi
测试命令和结果如下:
ging@ging-PC:~/脚本$ ./autoReplaceForjar.sh 传入新配置文件绝对路径 传入jar包绝对路径
更新文件操作
找到一个路径开始处理!
待查找文件路径!BOOT-INF/classes
原jar包路径!/home/ging/SGSfortest/app/realserver
BOOT-INF/classes已经存在,先删除!
正在添加: BOOT-INF/classes/application-dev.properties(输入 = 5791) (输出 = 1837)(压缩了 68%)
更新成功!