`
ch19880311
  • 浏览: 26633 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

shell脚本批量替换jar包中Class文件

阅读更多

下面是shell脚本批量替换jar包中Class文件

#!/bin/sh

#JAVA home path set
JAVA_HOME=/usr/local/web/fit/WAS/install/61x/java
export PATH=${PATH}:${JAVA_HOME}/bin


#param 1 is jar file path. Sample path: /root/jar/app.jar
appJar=$1

#param 2 is folder path which stores class files. Sample path: /root/classfiles
filesTobeUpdated=$2
tempDir=$filesTobeUpdated/temp

echo "delete temp directory"
if [ -d $tempDir ]
then
   rm -rf $tempDir
fi

echo "create temp file path:"$path
mkdir $tempDir

for i in `ls -l $filesTobeUpdated|grep ^- | awk '{print $9}'`
do
echo "finding file:"$i
path=""
num=0
for j in `jar tf $appJar`
do
if [ `echo $j |grep -c $i` -gt 0 ];then
echo "found file"
path="$path
$j"
num=`expr $num + 1`
if [ $num -eq 1 ];then
pathForNum1=$j
fi
fi
done
echo $num

if [ $num -gt 1 ];then
    fileNum=0
    while [ $fileNum != 1 ]
    do
        echo "$path"
        echo "More than 1 file matched, input filePath:"
        read filePath
        fileNum=`jar tf $appJar $filePath | wc -l`
        #for k in `jar tf $appJar`
        #do
        #    if [ `echo $k |grep -c $filePath` -gt 0 ];then
        #    fileNum=`expr $fileNum + 1`
        #    fi
        #done
    done
    path=$filePath
elif [ $num == 0 ]; then
    echo "Looks like this is newly added file, input filePath:"
    read filePath
    echo $filePath
    path=$filePath
else
    path=$pathForNum1
fi

cd $tempDir
pathCut=$path

while [ `echo $pathCut |grep -c '/'` -gt 0 ]
do
        element=`echo $pathCut | awk -F '/' '{print $1}'`
        if [ ! -d $element ]
        then
           echo "directory is not exist, create:"$element
           mkdir $element
        fi
        cd $element
        pathCut=${pathCut#*/}
        echo "pathCut is:"$pathCut
done
cp -f $filesTobeUpdated/$pathCut $tempDir/$path

cd $tempDir
jar uf $appJar $path

echo "replace done"
done

echo "delete temp directory"
if [ -d $tempDir ]
then
   rm -rf $tempDir
fi

 

0
0
分享到:
评论

相关推荐

    Shell脚本通过Java class文件启停Java程序源码(脚本及源码)

    在开发过程中经常会员到在Linux环境中使用Shell脚本启动和停止java程序的情况,常用的java -jar命令只能运行jar文件...以及程序的启动和停止脚本(非java -jar命令启动,使用shell脚本通过java class文件启停java程序)

    centOS6中使用crontab定时运行执行jar程序的脚本

    1、编写一个简单的java程序 public class testshell { public static void main(String[] args) { int count = 0;...2、编写shell脚本 #!/bin/bash export JAVA_HOME=/usr/local/jdk1.8.0_91 export PATH=$

    spark-mainframe-connector:Spark主机连接器

    该库是使用构建的,该由随附的Shell脚本自动下载。 要构建JAR文件,只需从项目根目录运行sbt/sbt package 。 测试可以按以下方式运行: sbt/sbt test 与Spark Shell一起使用 构建软件包后,可以使用--jars命令行...

    xalanjava源码-Jackson-RCE:杰克逊-RCE

    xalan java源码我们在证明什么 Jackson 数据绑定反序列化漏洞 应用环境 基于Spark框架的微服务() ...-D"exec.mainClass"="EncodeExploit" 上面的命令在attackscripts目录中创建attack.json cd 攻击脚本 ./add.sh ./l

    xalanjava源码-jackspoilt:导致RCE的上下文反序列化漏洞-远程代码执行

    xalan java源码我们在证明什么 Jackson 数据绑定反序列化漏洞 应用环境 基于Spark框架的微服务() ...-D"exec.mainClass"="EncodeExploit" 上面的命令在attackscripts目录中创建attack.json cd 攻击脚本 ./add.sh ./l

    网管教程 从入门到精通软件篇.txt

    CLASS:Java类文件 CLP:Windows 剪贴板文件 CLL:Crick Software Clicker文件 CLS:Visual Basic类文件 CMD:Windows NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件 CPI:Microsoft MS-DOS代码页...

    JAVA上百实例源码以及开源项目

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    JAVA上百实例源码以及开源项目源代码

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    java开源包1

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包11

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包2

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包3

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包6

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包5

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包10

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包4

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包8

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包7

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包9

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

Global site tag (gtag.js) - Google Analytics