• Linux脚本-使用jar自动替换配置文件


    背景

    最近公司需要在生产服务器上测试字库,需要非常频繁修改配置文件中的字体相关属性,然后实时调试,所以需要频繁的修改配置文件并手动发布出去。之前需要修改配置文件时,我们需要:

    1. 把jar包通过FTP传回本地电脑
    2. 把新配置文件,压缩进jar包替换老配置文件
    3. 再把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%)
    更新成功!
    
  • 相关阅读:
    cass9.1打开程序错误——加载arx失败
    c#类型和变量
    AutoCAD启动缓慢
    XAML特殊字符
    静态GPS时间修改
    AutoCAD的IntersectWith方法
    Visual studio2010开发AutoCAD2008、2006 启动调试问题
    安装CAD2006装好了为什么不能用,显示系统错误无法启动此程序,因计算机丢失aclst.dll。尝试重新安装该程序以解
    安装AutoCAD2006时,提示已终止安装
    CASS 2008的野外操作码
  • 原文地址:https://www.cnblogs.com/ging/p/13467981.html
Copyright © 2020-2023  润新知