shell 脚本自动更新/一换 android 手机的文件(批量刷apk)

shell 脚本批量替换 android 盒子 里面的文件

前提

我们每个项目上可能需要同时给几百个终端更换多个文件,以前量级你比较小,可以手动更换,但是大批量的更换费时费力;有时候会在生产环境中更换,就更为麻烦,所有就想通过
shell 脚本 + adb platform-tools 自动进行文件替换。

思路

见下面的流程图:
这里写图片描述

原理讲解:
首先将所有的ip都存储到一个文件中:DEVICESIP,我这里建立了三个目录:
log:存放操作日志,打印出执行过程,以及执行不成功的结果码解释
faliure:将因为各种原因没有替换成功的 ip 写到 failure 中
success:将替换成功的ip写到 success 中去
等所有的IP地址都已经写完之后,将原有的IP地址文件加上当前的日期编程日志文件。将failure文件替换成 DEVICESIP 文件,这样后面就不会多次替换文件了。

下面直接上代码(最终版的代码后面会附上):

#!/bin/sh

SuLog=/home/kuntai/success/success.txt
FaLog=/home/kuntai/failure/failure.txt
UpdateLog=/home/kuntai/log/update.log
IPLIST=/home/kuntai/DeviceIP.txt


echo "begin for update"
for ip in `cat $IPLIST`;
do 
     ping $ip -c 1 -w 2
    pingFlag=$?
        if [ $pingFlag -ne 0 ];then
        echo "$ip">>$FaLog
            echo "$ip:`perror $pingFlag`" >> $UpdateLog
            continue
        fi
        t=`md5sum /home/kuntai/libswlux.so` 
        t=${t% *}
        echo $t    
        killall -9 adb
        adb connect $ip
        if [ $? -ne 0 ];then
            echo "failure"
            echo "$ip">>$FaLog
            echo "first connect $ip:`perror $?`" >> $UpdateLog
            adb disconnect
            continue
        else
            echo "success"
            adb root
            rootFlag=$?
            if [ $rootFlag -ne 0 ];then
                echo "$ip">>$FaLog
                echo "root $ip:`perror $pingFlag`">>$UpdateLog
                adb disconnect
                continue
            fi
            adb connect $ip
            sleep 3
            connectFlag=$?
            if [ $connectFlag -ne 0 ];then
                echo "$ip">>$FaLog
                echo "connect $ip :`perror $connectFlag`">>$UpdateLog
                adb disconnect
                continue
            fi
            adb remount
            sleep 3
            remountFlag=$?
            if [ $remountFlag -ne 0 ];then
                echo "$ip">>$FaLog
                echo "remount $ip :`perror $pingFlag`" >>$UpdateLog
                adb disconnect
                continue
            fi
            #目前我们已经有root和读写权限 
            m=`adb shell md5sum /system/lib/libswlux.so`
            #mp=${m:0:32}
            m=${m% *}
            echo "盒子$ip文件MD5= $m"
            echo "服务器MD5= $t"
            echo $m
            echo $t

            if [ $m = $t ];then
                adb shell echo "md5相同,文件未发生改变" >> $UpdateLog
            else
                adb push /home/XXXX/XXXX /XXX/XX/
                if [ $? -ne 0 ]; then
                    echo $ip >> $FaLog
                    adb disconnect
                    continue
                else
                    echo "`date +'%Y%m%d %H:%M:%S'`:  $ip" >> $SuLog   
                    mt=`adb shell md5sum /system/lib/libswlux.so`
                    echo $mt >> $SuLog    
                    echo $mt >> $UpdateLog
                fi  
            fi
        fi  
            adb kill-server
            adb start-server
            killall -9 adb
            adb disconnect   
done 
mv $IPLIST "$IPLIST"".`date +'%Y%m%d%H%M%S'`"
cp $FaLog $IPLIST
mv $FaLog "$FaLog"".`date +'%Y%m%d%H%M%S'`"  

目前这个脚本有一个问题就是:在替换文件之前没有拿到该文件的权限,替换完成之后也没有给替换的文件授权,有的终端会导致文件错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值