C:\Users\wb_changxiang.chen\Desktop\get_log_adb.py

#! /usr/bin/env python
import os
import sys
import time
import zipfile
import subprocess
import shutil
import urllib2
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import poster

adb_prg = "adb"
def main(outdir):
global adb_prg
timestr = str(time.time())
timestr = timestr[0:10]
os.system("%s root"%adb_prg)
print ("wait-for-device ...")
os.system("%s wait-for-device"%adb_prg)
print ("device is ok.")
dirname = os.path.join(outdir,"upload_log_%s"%timestr)
if not os.path.exists(dirname):
os.makedirs(dirname)
os.system("%s shell getprop ro.yunos.build.version >%s"%(adb_prg,os.path.join(dirname,"version.txt")))
os.system("%s shell getprop >%s"%(adb_prg,os.path.join(dirname,"prop.txt")))
args = [adb_prg,"shell","ls","/data/","/mnt/sdcard/"]
retval,output = execute2(args)
datadir = []
items = output.split("\n")

for item in items:
item = item.strip()
if item == "anr":
datadir.append("/data/anr")
elif item == "apr":
datadir.append("/data/apr")
elif item == "tombstones":
datadir.append("/data/tombstones")
elif item == "tombstones_apr":
datadir.append("/data/tombstones_apr")
elif item == "aee_exp":
datadir.append("/mnt/sdcard/aee_exp")
for dirs in datadir:
os.system("%s pull %s %s >/dev/null 2>&1"%(adb_prg,dirs,dirname))
'''
os.system("%s pull /data/anr/ %s"%(adb_prg,dirname))
os.system("%s pull /data/apr/ %s"%(adb_prg,dirname))
os.system("%s pull /data/tombstones/ %s"%(adb_prg,dirname))
os.system("%s pull /data/tombstones_apr/ %s"%(adb_prg,dirname))
os.system("%s pull /mnt/sdcard/mtklog/aee_exp/ %s"%(adb_prg,dirname))
'''
zipname = dirname + ".zip"
zip = zipfile.ZipFile(zipname,"w",zipfile.ZIP_DEFLATED,True)
filecount = 0
for root,dirs,files in os.walk(dirname):
for file in files:
if file.startswith("anr") or file.startswith("tombstone") or file.startswith("error") or file.startswith("db."):
filename = os.path.join(root,file)
zip.write(filename,file)
filecount += 1
zip.write(os.path.join(dirname,"version.txt"),"version.txt")
zip.write(os.path.join(dirname,"prop.txt"),"prop.txt")
zip.close()
shutil.rmtree(dirname)
if filecount == 0:
os.remove(zipname)
print "Not found anr,apr,tombstone,mtk log file"
else:
print "create zip file %s"%zipname
#upload_file(zipname,"123456789")

def execute2(args):
global adb_prog
p = subprocess.Popen(args,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=False)
str = ""
for line in p.stdout:
str += line
p.wait()
return p.returncode,str

def upload_file(filename,bug_id):
register_openers()
datagen, headers = multipart_encode({"userfile": open(filename, "rb"),"action":"upload_log_file","from":"bugfree","bug_id":bug_id,"log_type":"", "username":"alibaba-test1","access_token":"Yu7&8qse.;<>mm","client_type":"python_client"})
request = urllib2.Request("http://10.125.224.50/php/upload.php", datagen, headers)
print urllib2.urlopen(request).read()

def usage(procname):

procname = os.path.basename(procname)
print "\nUsage: %s output_dir"%procname
print "example:"
print "\t%s . "%procname
print "\t%s log_dir\n"%procname

print "Syser tools for %s, version 1.0.0"%procname
print "Copyright (C) 2014 make by Wu yanfeng"
quit()

if __name__ == "__main__":
basename = os.path.basename(sys.argv[0])
if basename.endswith("adb.py"):
adb_prg = "adb"
elif basename.endswith("acb.py"):
adb_prg = "acb"
if len(sys.argv) == 1:
usage(sys.argv[0])
quit()
main(sys.argv[1])

C:\Users\wb_changxiang.chen\Desktop\get_log_adc.py

#! /usr/bin/env python
import os
import sys
import time
import zipfile
import subprocess
import shutil
import urllib2
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import poster

adb_prg = "adb"
def main(outdir):
global adb_prg
timestr = str(time.time())
timestr = timestr[0:10]
os.system("%s root"%adb_prg)
print ("wait-for-device ...")
os.system("%s wait-for-device"%adb_prg)
print ("device is ok.")
dirname = os.path.join(outdir,"upload_log_%s"%timestr)
if not os.path.exists(dirname):
os.makedirs(dirname)
os.system("%s shell getprop ro.yunos.build.version >%s"%(adb_prg,os.path.join(dirname,"version.txt")))
os.system("%s shell getprop >%s"%(adb_prg,os.path.join(dirname,"prop.txt")))
args = [adb_prg,"shell","ls","/data/","/mnt/sdcard/"]
retval,output = execute2(args)
datadir = []
items = output.split("\n")

for item in items:
item = item.strip()
if item == "anr":
datadir.append("/data/anr")
elif item == "apr":
datadir.append("/data/apr")
elif item == "tombstones":
datadir.append("/data/tombstones")
elif item == "tombstones_apr":
datadir.append("/data/tombstones_apr")
elif item == "aee_exp":
datadir.append("/mnt/sdcard/aee_exp")
for dirs in datadir:
os.system("%s pull %s %s >/dev/null 2>&1"%(adb_prg,dirs,dirname))
'''
os.system("%s pull /data/anr/ %s"%(adb_prg,dirname))
os.system("%s pull /data/apr/ %s"%(adb_prg,dirname))
os.system("%s pull /data/tombstones/ %s"%(adb_prg,dirname))
os.system("%s pull /data/tombstones_apr/ %s"%(adb_prg,dirname))
os.system("%s pull /mnt/sdcard/mtklog/aee_exp/ %s"%(adb_prg,dirname))
'''
zipname = dirname + ".zip"
zip = zipfile.ZipFile(zipname,"w",zipfile.ZIP_DEFLATED,True)
filecount = 0
for root,dirs,files in os.walk(dirname):
for file in files:
if file.startswith("anr") or file.startswith("tombstone") or file.startswith("error") or file.startswith("db."):
filename = os.path.join(root,file)
zip.write(filename,file)
filecount += 1
zip.write(os.path.join(dirname,"version.txt"),"version.txt")
zip.write(os.path.join(dirname,"prop.txt"),"prop.txt")
zip.close()
shutil.rmtree(dirname)
if filecount == 0:
os.remove(zipname)
print "Not found anr,apr,tombstone,mtk log file"
else:
print "create zip file %s"%zipname
#upload_file(zipname,"123456789")

def execute2(args):
global adb_prog
p = subprocess.Popen(args,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=False)
str = ""
for line in p.stdout:
str += line
p.wait()
return p.returncode,str

def upload_file(filename,bug_id):
register_openers()
datagen, headers = multipart_encode({"userfile": open(filename, "rb"),"action":"upload_log_file","from":"bugfree","bug_id":bug_id,"log_type":"", "username":"alibaba-test1","access_token":"Yu7&8qse.;<>mm","client_type":"python_client"})
request = urllib2.Request("http://10.125.224.50/php/upload.php", datagen, headers)
print urllib2.urlopen(request).read()

def usage(procname):

procname = os.path.basename(procname)
print "\nUsage: %s output_dir"%procname
print "example:"
print "\t%s . "%procname
print "\t%s log_dir\n"%procname

print "Syser tools for %s, version 1.0.0"%procname
print "Copyright (C) 2014 make by Wu yanfeng"
quit()

if __name__ == "__main__":
basename = os.path.basename(sys.argv[0])
if basename.endswith("adb.py"):
adb_prg = "adb"
elif basename.endswith("acb.py"):
adb_prg = "acb"
if len(sys.argv) == 1:
usage(sys.argv[0])
quit()
main(sys.argv[1])

get log的更多相关文章

  1. 如何正确使用日志Log

    title: 如何正确使用日志Log date: 2015-01-08 12:54:46 categories: [Python] tags: [Python,log] --- 文章首发地址:http ...

  2. UWP开发之Mvvmlight实践七:如何查找设备(Mobile模拟器、实体手机、PC)中应用的Log等文件

    在开发中或者后期测试乃至最后交付使用的时候,如果应用出问题了我们一般的做法就是查看Log文件.上章也提到了查看Log文件,这章重点讲解下如何查看Log文件?如何找到我们需要的Packages安装包目录 ...

  3. const let,console.log('a',a)跟console.log('a'+a)的区别

    const 创建一个只读的常量 let块级作用域 const let重复赋值都会报错 console.log('a',a) a console.log('a'+a) a2 逗号的值会有空格:用加号的值 ...

  4. CYQ.Data V5 从入门到放弃ORM系列:教程 - Log、SysLogs两个日志类使用

    Log 静态类介绍: Public Static (Shared) Methods GetExceptionMessage 获取异常的内部信息 WriteLogToDB Overloaded. 将日志 ...

  5. your password has expired.to log in you must change it

    今天应用挂了,log提示密码过期.客户端连接不上. 打开mysql,执行sql语句提示密码过期 执行set password=new password('123456'); 提示成功,但客户端仍然连接 ...

  6. console.log("A"-"B"+"3")=?

    (点击上方的订阅号,可快速关注,关注有惊喜哦^_^) 前不久看到一道JS基础题目,做了一下竟然错了一半...在此分享一下: 先把题目放上来,大家可以自己测试一下再看答案哦^_^ ①console.lo ...

  7. 监视EntityFramework中的sql流转你需要知道的三种方式Log,SqlServerProfile, EFProfile

    大家在学习entityframework的时候,都知道那linq写的叫一个爽,再也不用区分不同RDMS的sql版本差异了,但是呢,高效率带来了差灵活性,我们 无法控制sql的生成策略,所以必须不要让自 ...

  8. 关于Quartz.NET作业调度框架的一点小小的封装,实现伪AOP写LOG功能

    Quartz.NET是一个非常强大的作业调度框架,适用于各种定时执行的业务处理等,类似于WINDOWS自带的任务计划程序,其中运用Cron表达式来实现各种定时触发条件是我认为最为惊喜的地方. Quar ...

  9. 解决MyEclipe出现An error has occurred,See error log for more details的错误

    今晚在卸载MyEclipse时出现An error has occurred,See error log for more details的错误,打开相应路径下的文件查看得如下: !SESSION 2 ...

  10. MySQL5.7 error log时间显示问题

    最近有两三套环境升级到了5.7.16,发现mysql.err中的时间好像有些问题,经查是mysql 5.7后的变更,如下: root@localhost [(none)]>select now( ...

随机推荐

  1. Oracle:通过pl/sql developer工具导入excel数据

    1.在pl/sql developer中选择工具-->ODBC导入器 2.选择需要导入的EXCEL文件(CVS也可以):用户名.口令不用管,直接点“连接”,找到要导入的xls文件 3. 选择“导 ...

  2. rcfile

    转自:http://flyingdutchman.iteye.com/blog/1871025 在当前的基于Hadoop系统的数据仓库中,数据存储格式是影响数据仓库性能的一个重要因素.Facebook ...

  3. Centos Missing Library: QtWebKit.so.4

    /******************************************************************** * Centos Missing Library: QtWe ...

  4. [Selenium] 如何绕过 IE 的安全模式

    自从 IE7 引入 Protected Mode 以来, IE 浏览器的安全性的确得到了一定程度的提高.其原理从本质来讲,在浏览某些需要启用保护模式的页面时,会开启一个新的浏览器会话以完成任务,而此时 ...

  5. Oracle常用数据库表操作

    配置数据库: user:orcl.passward:71911.Hao全局数据库名:orcl..解锁数据库用户名,SCOTT,SYSTEM,SYS,   PWD:71911.Hao输入sqlplus, ...

  6. 【SDOI2009】SuperGCD

    [题目链接] 点击打开链接 [算法] 1.关于求最大公约数的算法 若使用辗转相除法,那么显然会超时 不妨这样思考 : 要求gcd(a,b), 若a为偶数,b为偶数,则gcd(a,b) = 2 * gc ...

  7. 库&框架-----CDN网络引用总结

    百度jquery引用地址 http://apps.bdimg.com/libs/jquery/1.6.4/jquery.js http://apps.bdimg.com/libs/jquery/1.6 ...

  8. atof和atoi

    atof:将字串转换成浮点型数 表头文件 #include <stdlib.h> 函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而 ...

  9. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 22. 再讲Tag Helpers

    深入的讲Tag Helpers 加载app下面的所有的文件夹以及各自文件夹下面所有的js文件. exclude是排除掉Services文件夹和其下面的子文件夹 使用cdn加载远程的js文件 找hidd ...

  10. Gradle系列之二 Groovy对文件的操作

    Groovy对文件的操作 对文件的遍历 假设文件的原始内容为: hello,world 这里是北京 andorid and ios are good system 第一种方法:使用 eachLine( ...