Ftp上传和下载Apk脚本

2020-11-19  本文已影响0人  江ls
通过 gradle重命名并上传apk
configurations {
     ftpAntTask
}

dependencies闭包中添加

ftpAntTask("org.apache.ant:ant-commons-net:1.8.4") {
    module("commons-net:commons-net:1.4.1") {
         dpendencies "oro:oro:2.0.8:jar"
    }
}
String outName
task assembleAndCopyApk(type: Copy) {
    // 拷贝apk
    from(originalFilePath) 
    into(destFilePath)
    // 重命名
    outName = "${releaseTime()}.apk"
    rename(orginalFileName, outName)
    // 编译命令
    dependsOn xxx
}
def releaseTime() {
    return new Date().format("MMdd_HHmm")
}
task uploadToFtp {
    // 先执行编译,拷贝,重命名
    dependsOn 'assembleAndCopyApk'
    doLast {
         ant {
                taskdef(name: 'ftp', 
                    classname:  'org.apache.tools.ant.taskdefs.optional.net.FTP', 
                    classpath: configurations.ftpAntTask.asPath)
                ftp (server: "xxx.xxx.xxx.xxx",  //ftp地址
                      userid: "xxxx",  //用户名
                      password: "xxxx", //密码
                      remoteDir: "/") {
                      fileset(dir: outputDir) {
                              include(name: outName)
                      }
                  }
         }
    }
uploadToFtp.setGroup(group)
使用python脚本下载和安装apk
from ftplib import FTP
import os, sys, string, datetime, time
import socket

class MYFTP:
    def __init__(self, rootdir_local, hostaddr, username, password, remotedir, port=21):
        self.hostaddr = hostaddr
        self.username = username
        self.password = password
        self.remotedir = remotedir
        self.port = port
        self.ftp = FTP()
        self.file_list = []

        self.rootdir_local = rootdir_local
        self.local_files = []
        self.remote_files = []

    # self.ftp.set_debuglevel(2)
    def __del__(self):
        self.ftp.close()

    # self.ftp.set_debuglevel(0)
    def login(self):
        ftp = self.ftp
        try:
            timeout = 300
            socket.setdefaulttimeout(timeout)
            ftp.set_pasv(True)
            print (u'开始连接到 %s' % (self.hostaddr))
            ftp.connect(self.hostaddr, self.port)
            print (u'成功连接到 %s' % (self.hostaddr))
            print (u'开始登录到 %s' % (self.hostaddr))
            ftp.login(self.username, self.password)
            print (u'成功登录到 %s' % (self.hostaddr))
            debug_print(ftp.getwelcome())
        except Exception:
            print (u'连接或登录失败')
        try:
            ftp.cwd(self.remotedir)
        except(Exception):
            print (u'切换目录失败')

    def margeFile(self):
        temp = []
        try:
            for f in self.remote_files:
                if f in self.local_files:
                    temp.append(f)
            for f in temp:
                self.remote_files.remove(f)
        except Exception as e:
            print (e)
        print (self.remote_files)

    def get_localFileList(self):
        localFiles = os.listdir(self.rootdir_local)
        for fileName in localFiles:
            # print ('本地文件列表:', fileName)
            self.local_files.append(fileName)

    def get_remoteFileList(self):
        print (u'读取服务器文件列表')
        print (self.ftp.dir())
        try:
            self.remote_files = self.ftp.nlst()
        except Exception as e:
            print (e)
        for name in self.remote_files:
            print ('服务端文件:', name)

    def download_file(self, localfile, remotefile):
        debug_print(u'>>>>>>>>>>>>下载文件 %s <<<<<<<<<<<<' % localfile)
        file_handler = open(localfile, 'wb')
        self.ftp.retrbinary(u'RETR %s' % (remotefile), file_handler.write)
        file_handler.close()

    def download_marge_files(self):
        name = ''
        for f in self.remote_files:
            self.download_file(rootdir_local + '/' + f, f)
            name = f
        print ('下载Apk:', name);
        cmdStr = 'adb install -r F:/%s' %name
        print (cmdStr)
        d = os.system(cmdStr)
        print ('安装APK: ', d)

def debug_print(s):
    print (s)

if __name__ == '__main__':
    timenow = time.localtime()
    datenow = time.strftime('%Y-%m-%d', timenow)
    # 配置如下变量
    hostaddr = 'xxx.xxx.xxx.xxx'  # ftp地址
    username = 'xxx'  # 用户名
    password = 'xxx'  # 密码
    port = 21  # 端口号
    rootdir_local = 'F:/'  # 本地目录
    rootdir_remote = '/'  # 远程目录

    f = MYFTP(rootdir_local, hostaddr, username, password, rootdir_remote, port)
    f.login()
    f.get_localFileList()
    f.get_remoteFileList()
    f.margeFile()
    f.download_marge_files()
上一篇下一篇

猜你喜欢

热点阅读