主要记录python如何调用windows CLI
手机连接PC,adb devices可以看到手机sn
通过adb 获取指定app的processID UID
读取Android /proc/net/xt_qtaguid/stats 获取指定列,格式化输出,用于后续统计app消耗的流量
#coding=utf-8 import subprocessimport timefo = open(r"D:\foo.txt", "w")#获取进程IDgetProcessIdcmd = 'adb shell ps | grep appname'p = subprocess.Popen(getProcessIdcmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)content = p.stdout.readlines()if len(content) == 1: processId = content[0].split()[1]else: print "not get processID"#获取进程对应的UIDgetUidcmd = 'adb shell cat /proc/' + processId + '/status | grep Uid'p = subprocess.Popen(getUidcmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)content = p.stdout.readlines()uidList = content[0].strip().split('\t')print uidListuid = uidList[1]#获取UID对应的TrafficgetTrafficcmd = 'adb shell cat /proc/net/xt_qtaguid/stats | grep ' + uidfor i in range(10000): currentTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) traffic_initial = [0]*16 traffic_prefix = [] p = subprocess.Popen(getTrafficcmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) for line in p.stdout.readlines(): ll = line.strip() ll2=ll.replace(' ',',') ll2_list=ll2.split(',') traffic_list = ll2_list[5:] traffic_prefix = ll2_list[0:4] traffic_list_int = [int(e) for e in traffic_list] traffic_initial = [x+y for x, y in zip(traffic_initial, traffic_list_int)] #print traffic_list print currentTime + "," + ll2 retval = p.wait() print traffic_initial traffic_list_str = [str(e) for e in traffic_initial] print traffic_prefix + traffic_list_str traffic = ','.join(traffic_prefix + traffic_list_str) print currentTime +','+ traffic fo.write(currentTime +','+ traffic + '\n') time.sleep(60) print '--------------'fo.close()