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. WAS:Thread "server.startup : 1" (00000020) and may be hung异常

    有现场server启动时,启动不了,后台报错如下: [// ::: CST] ThreadMonitor W WSVR0605W: Thread ) has been active milliseco ...

  2. Android API中的对话框

    Android API中提供了四个Dialog的自定义子类: AlertDialog ProgressDialog DatePackerDialog TimePickerDialog 也可以派生出自己 ...

  3. 「咕咕网校 - 基础省选」树上问题的进阶 by Drench

    一定要在noip之前把自己花钱买的Luogu网课梳理完!QAQ 树上前缀和: 对于有根树,在每个点记录 val (点权) 和 sum(到根的点权之和) 当然记录的值因题而异(但是既然叫树上前缀和当然就 ...

  4. 洛谷 P3957 跳房子 —— 二分答案+单调队列优化DP

    题目:https://www.luogu.org/problemnew/show/P3957 先二分一个 g,然后判断: 由于转移的范围是一个区间,也就是滑动窗口,所以单调队列优化: 可以先令队尾为 ...

  5. javascript switch..... case

    switch(条件表达式) { case 常量: { 语句a; } break; case 常量: { 语句b; } break; case 常量: { 语句c; } break; ... case ...

  6. bzoj2616

    树形dp+笛卡尔树+单调栈 这道题跟树形dp有什么关系? 事实上,我们对矩形建立笛卡尔树,先找出最矮的矩形,向两边区间最矮的矩形连边,这样就构成了一棵二叉树,因为只有一个矮的区间会对高的区间造成影响, ...

  7. 4、html的body内标签之input系列

    一.input标签与form表单 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  8. 用文件作为Swap分区

    用文件作为Swap分区 1.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小).# dd if=/dev/zero ...

  9. 问题 3: 糖果数(candy)

    问题 3: 糖果数(candy) 题目描述 学校准备去春游,委托小明分发糖果,每位同学一袋,数量随机. 一共有N袋糖果,编号为1到N,小明拿了从编号a袋到编号b袋的糖果去分发,小明想知道,他一共拿了多 ...

  10. 鸟哥私房菜基础篇:学习 Shell Scripts习题

    猫宁!!! 参考链接:http://cn.linux.vbird.org/linux_basic/0340bashshell-scripts.php 鸟哥是为中国信息技术发展做出巨大贡献的人. 1-请 ...