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. python中的编码和解码

    计算机中常见的编码方式有多种,英文一般是ascii编码,其他有unicode,utf-8,gbk,utf-16等编码. 常见编码方式: ASCII编码:ASCII是早期的编码,包含英文字母.数字和 ...

  2. BZOJ_1295_[SCOI2009]最长距离_dij

    BZOJ_1295_[SCOI2009]最长距离_dij Description windy有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那 ...

  3. 当你触摸并按住触摸目标时候,禁止系统默认菜单-webkit-touch-call

    当你触摸并按住触摸目标时候,禁止或显示系统默认菜单. -webkit-touch-callout 是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS ...

  4. windows下安装RabbitMQ消息服务器 + 读写队列

    RabbitMQ是什么 ? RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. 1:安装RabbitMQ需要先安装Erla ...

  5. 【215】◀▶ IDL 文件操作说明 (黑底)

    参考:I/O - General File Access Routines —— 基本文件操作函数 01   CD 修改当前的工作空间路径. 02   FILE_SEARCH 对文件名进行特定的查找. ...

  6. Gym 100299C && UVaLive 6582 Magical GCD (暴力+数论)

    题意:给出一个长度在 100 000 以内的正整数序列,大小不超过 10^ 12.求一个连续子序列,使得在所有的连续子序列中, 它们的GCD值乘以它们的长度最大. 析:暴力枚举右端点,然后在枚举左端点 ...

  7. 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时2

    课时2 计算机视觉历史回顾与介绍中 1966年是计算机视觉的诞生年. 视觉处理流程的第一步,是对简单的形状结构处理,边缘排列. 边缘决定了结构. David Marr写了一本非常有影响力的书,视觉是分 ...

  8. adb logcat 查看日志 (转载)

    转自:http://blog.csdn.net/xyz_lmn/article/details/7004710 使用 logcat 命令 查看和跟踪系统日志缓冲区的命令logcat的一般用法是: [a ...

  9. K

    https://codeforces.com/gym/101982/attachments K 打表暴力 /*#include<bits/stdc++.h> using namespace ...

  10. Codeforces - 1114B - Yet Another Array Partitioning Task - 构造 - 排序

    https://codeforces.com/contest/1114/problem/B 一开始叫我做,我是不会做的,我没发现这个性质. 其实应该很好想才对,至少要选m个元素,其中m个作为最大值,从 ...