Advertisement
Titokhan

BitTorrent Sync log parsing using Python

Oct 7th, 2014
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.04 KB | None | 0 0
  1. import os,math
  2. from datetime import *
  3.  
  4. thor = raw_input("Enter the name of the BitTorrent Sync debug log file: ")
  5. odin = raw_input("Enter the name of the folder where synced files are stored: ")
  6.  
  7. report = open("report.log",'w');
  8. sync_log = open(thor,'r');
  9. fn = open("fn.log",'w');
  10. pre_st = open("pre_st.log",'w');
  11. pre_et = open("pre_et.log",'w');
  12.  
  13. report.write('Name of the files & corresponding no of chunks' + '\n')
  14. report.write('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + '\n')
  15.  
  16. i=0
  17. for eachline in sync_log:
  18.     if 'Got file from remote' in eachline:
  19.         i=i+1
  20.         fn.write(str(eachline[88:135]) + ' ' + str(eachline[162:165]) + '\n')
  21.         report.write(str(eachline[88:135]) + ' ' + str(eachline[162:165]) + '\n')
  22.     elif 'event = "IN_CREATE"' in eachline:
  23.         pre_st.write(str(eachline[43:90] + ' ' + eachline[10:22]) + '\n')
  24.     elif 'Finished downloading file' in eachline:
  25.         pre_et.write(str(eachline[50:97] + ' ' + eachline[10:22]) + '\n')
  26. report.write('\n')
  27.  
  28. report.write('Total no of files' + '\n')
  29. report.write('~~~~~~~~~~~~~~~~~' + '\n')
  30. report.write(str(i) + '\n' + '\n')
  31.  
  32. report.write('Size of the files (in bytes)' + '\n')
  33. report.write('~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + '\n')
  34. dir = odin
  35. fs = open("fs.log",'w');
  36. for f in os.listdir(dir):
  37.     if os.path.isfile(dir + '/' + f) and len(f) == 47:
  38.         fs.write(str(os.path.getsize(dir + '/' + f)) + '\n')
  39.         report.write(f + ' ' + str(os.path.getsize(dir + '/' + f)) + '\n')
  40.        
  41. report.write('\n')
  42. report.write('Size of the chunks of the files (in bytes)' + '\n')
  43. report.write('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + '\n')
  44.            
  45. fs = open("fs.log",'r');
  46. fn = open("fn.log",'r');
  47. for eachline1, eachline2 in zip(fs, fn):
  48.     chunk_size = float(eachline1)/float(eachline2[48:51])
  49.     report.write(eachline2[:47] + ' ' + "%.2f" % chunk_size + '\n')
  50.  
  51. report.write('\n')
  52. report.write('Sync starting time' + '\n')
  53. report.write('~~~~~~~~~~~~~~~~~~' + '\n')
  54.  
  55. pre_st = open("pre_st.log", 'r')
  56. st = open("st.log", 'w')
  57. lineList = pre_st.readlines()
  58. lineList.sort()
  59. for line in lineList:
  60.     st.write(line)
  61.     report.write(line)
  62. report.write('\n')
  63. pre_st.close()
  64.  
  65. report.write('Sync ending time' + '\n')
  66. report.write('~~~~~~~~~~~~~~~~' + '\n')
  67.  
  68. pre_et = open("pre_et.log", 'r')
  69. et = open("et.log", 'w')
  70. lineList = pre_et.readlines()
  71. lineList.sort()
  72. for line in lineList:
  73.     et.write(line)
  74.     report.write(line)
  75. report.write('\n')     
  76. pre_et.close()
  77.  
  78. report.write('Time required for syncing (in seconds)' + '\n')
  79. report.write('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + '\n')
  80.  
  81. st = open("st.log",'r');
  82. et = open("et.log",'r');
  83. tt = open("tt.log",'w');
  84. for eachline1, eachline2 in zip(st, et):
  85.         if eachline1[:47] == eachline2[:47]:
  86.             s_t=datetime.strptime(eachline1[48:60], "%H:%M:%S.%f")
  87.             e_t=datetime.strptime(eachline2[48:60], "%H:%M:%S.%f")
  88.             diff=e_t-s_t
  89.             tt.write(str(diff.seconds) + '\n')
  90.             report.write(eachline1[:47] + ' ' + str(diff.seconds) + '\n')
  91.  
  92. report.write('\n')
  93. report.write('Average syncing speed (in KBPS)' + '\n')
  94. report.write('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + '\n')
  95.            
  96. fs = open("fs.log",'r');
  97. tt = open("tt.log",'r');
  98. ts = open("ts.log",'w');
  99. for eachline1, eachline2 in zip(fs, tt):
  100.     kbps = float(eachline1)/float(eachline2)/1024
  101.     ts.write("%.2f" % kbps + '\n')
  102.     report.write("%.2f" % kbps + '\n')
  103.    
  104. report.write('\n') 
  105. report.write('Some statistics regarding syncing speed' + '\n')
  106. report.write('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + '\n')
  107.    
  108. ts = open("ts.log",'r');
  109. sum=0
  110. sumsq=0
  111. for eachline in ts:
  112.     sum=sum+float(eachline)
  113.     sumsq=sumsq+float(eachline)*float(eachline)
  114.  
  115. mean=sum/i
  116. sd=math.sqrt((sumsq/i)-mean*mean)
  117. report.write("Mean: %.3f" % mean + '\n')
  118. report.write("SD: %.3f" % sd)
  119.  
  120. fs.close()
  121. fn.close()
  122. st.close()
  123. et.close()
  124. tt.close()
  125. ts.close()
  126. os.remove("pre_st.log")
  127. os.remove("pre_et.log")
  128. os.remove("fs.log")
  129. os.remove("fn.log")
  130. os.remove("st.log")
  131. os.remove("et.log")
  132. os.remove("tt.log")
  133. os.remove("ts.log")
  134.        
  135. raw_input("\nThe log is analysed & the report is stored in report.log.")
  136. raw_input("\nPress the enter key to exit.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement