Lines 110-158
Link Here
|
110 |
def _fmt_summary_detail(self): |
110 |
def _fmt_summary_detail(self): |
111 |
|
111 |
|
112 |
if self.got_totals: |
112 |
if self.got_totals: |
113 |
print "Ignores: %s" % self.field_vals['ignores'] |
113 |
print("Ignores: %s" % self.field_vals['ignores']) |
114 |
print "Total Flows: %s" % self.field_vals['flows'] |
114 |
print("Total Flows: %s" % self.field_vals['flows']) |
115 |
print "Total Octets: %s" % self.field_vals['octets'] |
115 |
print("Total Octets: %s" % self.field_vals['octets']) |
116 |
print "Total Packets: %s" % self.field_vals['packets'] |
116 |
print("Total Packets: %s" % self.field_vals['packets']) |
117 |
print "Total Duration (ms): %s" % self.field_vals['duration'] |
117 |
print("Total Duration (ms): %s" % self.field_vals['duration']) |
118 |
print "Real Time: %s" % self.field_vals['time_real'] |
118 |
print("Real Time: %s" % self.field_vals['time_real']) |
119 |
print "Average Flow Time: %s" % self.field_vals['aflowtime'] |
119 |
print("Average Flow Time: %s" % self.field_vals['aflowtime']) |
120 |
print "Average Packets/Second: %s" % self.field_vals['aps'] |
120 |
print("Average Packets/Second: %s" % self.field_vals['aps']) |
121 |
print "Average Flows/Second: %s" % self.field_vals['afs'] |
121 |
print("Average Flows/Second: %s" % self.field_vals['afs']) |
122 |
print "Average Packets/Flow: %s" % self.field_vals['apf'] |
122 |
print("Average Packets/Flow: %s" % self.field_vals['apf']) |
123 |
print "Flows/Second: %s" % self.field_vals['fps'] |
123 |
print("Flows/Second: %s" % self.field_vals['fps']) |
124 |
print "Flows/Second (real): %s" % self.field_vals['fps_real'] |
124 |
print("Flows/Second (real): %s" % self.field_vals['fps_real']) |
125 |
|
125 |
|
126 |
print "\nAverage IP packet size distribution:" |
126 |
print("\nAverage IP packet size distribution:") |
127 |
print "\n 1-32 64 96 128 160 192 224 256 288 320 352 384 416 448 480\n ", |
127 |
print("\n 1-32 64 96 128 160 192 224 256 288 320 352 384 416 448 480\n ",) |
128 |
for x in range(7,22): |
128 |
for x in range(7,22): |
129 |
print ("%-3.3f" % float(self.field_vals[x]))[1:], |
129 |
print ("%-3.3f" % float(self.field_vals[x]))[1:], |
130 |
print "\n\n 512 544 576 1024 1536 2048 2560 3072 3584 4096 4608\n ", |
130 |
print("\n\n 512 544 576 1024 1536 2048 2560 3072 3584 4096 4608\n ", end=" ") |
131 |
for x in range(22,33): |
131 |
for x in range(22,33): |
132 |
print ("%-3.3f" % float(self.field_vals[x]))[1:], |
132 |
print ("%-3.3f" % float(self.field_vals[x]))[1:], |
133 |
|
133 |
|
134 |
print "\n\nPackets per flow distribution:" |
134 |
print("\n\nPackets per flow distribution:") |
135 |
print "\n 1 2 4 8 12 16 20 24 28 32 36 40 44 48 52\n ", |
135 |
print("\n 1 2 4 8 12 16 20 24 28 32 36 40 44 48 52\n ", end=" ") |
136 |
for x in range(33,48): |
136 |
for x in range(33,48): |
137 |
print ("%-3.3f" % float(self.field_vals[x]))[1:], |
137 |
print ("%-3.3f" % float(self.field_vals[x]))[1:], |
138 |
print "\n\n 60 100 200 300 400 500 600 700 800 900 >900\n ", |
138 |
print("\n\n 60 100 200 300 400 500 600 700 800 900 >900\n ", end=" ") |
139 |
for x in range(48,59): |
139 |
for x in range(48,59): |
140 |
print ("%-3.3f" % float(self.field_vals[x]))[1:], |
140 |
print ("%-3.3f" % float(self.field_vals[x]))[1:], |
141 |
|
141 |
|
142 |
print "\n\nOctets per flow distribution:" |
142 |
print("\n\nOctets per flow distribution:") |
143 |
print "\n 32 64 128 256 512 1280 2048 2816 3584 4352 5120 5888 6656 7424 8192\n ", |
143 |
print("\n 32 64 128 256 512 1280 2048 2816 3584 4352 5120 5888 6656 7424 8192\n ", end=" ") |
144 |
for x in range(59,74): |
144 |
for x in range(59,74): |
145 |
print ("%-3.3f" % float(self.field_vals[x]))[1:], |
145 |
print ("%-3.3f" % float(self.field_vals[x]))[1:], |
146 |
print "\n\n 8960 9728 10496 11264 12032 12800 13568 14336 15104 15872 >15872\n ", |
146 |
print("\n\n 8960 9728 10496 11264 12032 12800 13568 14336 15104 15872 >15872\n ", end=" ") |
147 |
print ("%-3.3f" % float(self.field_vals[74]))[1:], |
147 |
print ("%-3.3f" % float(self.field_vals[74]))[1:], |
148 |
for x in range(75,85): |
148 |
for x in range(75,85): |
149 |
print ("%-3.3f " % float(self.field_vals[x]))[1:], |
149 |
print ("%-3.3f " % float(self.field_vals[x]))[1:], |
150 |
|
150 |
|
151 |
print "\n\nFlow Time Distribution (ms):" |
151 |
print("\n\nFlow Time Distribution (ms):") |
152 |
print "\n 10 50 100 200 500 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000\n ", |
152 |
print("\n 10 50 100 200 500 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000\n ", end=" ") |
153 |
for x in range(85,100): |
153 |
for x in range(85,100): |
154 |
print ("%-3.3f" % float(self.field_vals[x]))[1:], |
154 |
print ("%-3.3f" % float(self.field_vals[x]))[1:], |
155 |
print "\n\n 12000 14000 16000 18000 20000 22000 24000 26000 28000 30000 >30000\n ", |
155 |
print("\n\n 12000 14000 16000 18000 20000 22000 24000 26000 28000 30000 >30000\n ", end=" ") |
156 |
for x in range(100,111): |
156 |
for x in range(100,111): |
157 |
print ("%-3.3f " % float(self.field_vals[x]))[1:], |
157 |
print ("%-3.3f " % float(self.field_vals[x]))[1:], |
158 |
print |
158 |
print |
Lines 172-178
Link Here
|
172 |
if self.field_display[y]: |
172 |
if self.field_display[y]: |
173 |
# print "x=",x,"y=",y,"#" |
173 |
# print "x=",x,"y=",y,"#" |
174 |
i = self.field_avals[x][y] |
174 |
i = self.field_avals[x][y] |
175 |
print i.ljust(self.field_lens[y]), |
175 |
print(i.ljust(self.field_lens[y]), end=" ") |
176 |
if line: |
176 |
if line: |
177 |
line = line - 1 |
177 |
line = line - 1 |
178 |
if not line: |
178 |
if not line: |
Lines 194-202
Link Here
|
194 |
for i in self.header_info: |
194 |
for i in self.header_info: |
195 |
if i[0:7] == '# rec1:': |
195 |
if i[0:7] == '# rec1:': |
196 |
break |
196 |
break |
197 |
print i; |
197 |
print(i); |
198 |
|
198 |
|
199 |
print "# ", sys.argv |
199 |
print("# ", sys.argv) |
200 |
|
200 |
|
201 |
# summary-detail is a special format |
201 |
# summary-detail is a special format |
202 |
if self.display_summary_detail != 1: |
202 |
if self.display_summary_detail != 1: |
Lines 204-216
Link Here
|
204 |
if self.field_display[x]: |
204 |
if self.field_display[x]: |
205 |
i = self.field_names[x] |
205 |
i = self.field_names[x] |
206 |
l = self.field_lens[x] |
206 |
l = self.field_lens[x] |
207 |
print i.ljust(l), |
207 |
print(i.ljust(l), end=" ") |
208 |
print |
208 |
print |
209 |
# |
209 |
# |
210 |
# |
210 |
# |
211 |
# |
211 |
# |
212 |
def fmt_ascii_footer(self) : |
212 |
def fmt_ascii_footer(self) : |
213 |
print "\n", |
213 |
print ("\n", end=" ") |
214 |
|
214 |
|
215 |
# |
215 |
# |
216 |
# HTML |
216 |
# HTML |
Lines 220-239
Link Here
|
220 |
|
220 |
|
221 |
if self.display_header: |
221 |
if self.display_header: |
222 |
|
222 |
|
223 |
print '''<pre>''' |
223 |
print('''<pre>''') |
224 |
for i in self.header_info: |
224 |
for i in self.header_info: |
225 |
if i[0:7] == '#rec1:': |
225 |
if i[0:7] == '#rec1:': |
226 |
break |
226 |
break |
227 |
print i |
227 |
print(i) |
228 |
print '''</pre>''' |
228 |
print('''</pre>''') |
229 |
|
229 |
|
230 |
print "<table border cellspacing=0 cellpadding=5>" |
230 |
print("<table border cellspacing=0 cellpadding=5>") |
231 |
print "<tr>" |
231 |
print("<tr>") |
232 |
if self.display_summary_detail != 1: |
232 |
if self.display_summary_detail != 1: |
233 |
for x in xrange(self.field_total): |
233 |
for x in xrange(self.field_total): |
234 |
if self.field_display[x]: |
234 |
if self.field_display[x]: |
235 |
print " <th>", self.field_names[x], '''</th>''' |
235 |
print(" <th>", self.field_names[x], '''</th>''') |
236 |
print '''</tr>''' |
236 |
print('''</tr>''') |
237 |
|
237 |
|
238 |
# |
238 |
# |
239 |
# |
239 |
# |
Lines 245-270
Link Here
|
245 |
line = int(self.max_lines) |
245 |
line = int(self.max_lines) |
246 |
|
246 |
|
247 |
for x in self.field_iter: |
247 |
for x in self.field_iter: |
248 |
print "<tr>" |
248 |
print("<tr>") |
249 |
for y in xrange(self.field_total): |
249 |
for y in xrange(self.field_total): |
250 |
if self.field_display[y]: |
250 |
if self.field_display[y]: |
251 |
i = self.field_avals[x][y] |
251 |
i = self.field_avals[x][y] |
252 |
print " <td>", i, '''</td>''' |
252 |
print(" <td>", i, '''</td>''') |
253 |
if line: |
253 |
if line: |
254 |
line = line - 1 |
254 |
line = line - 1 |
255 |
if not line: |
255 |
if not line: |
256 |
break |
256 |
break |
257 |
print '''</tr>''' |
257 |
print('''</tr>''') |
258 |
|
258 |
|
259 |
else: |
259 |
else: |
260 |
print '''<pre>''' |
260 |
print('''<pre>''') |
261 |
self._fmt_summary_detail() |
261 |
self._fmt_summary_detail() |
262 |
print '''</pre>''' |
262 |
print('''</pre>''') |
263 |
# |
263 |
# |
264 |
# |
264 |
# |
265 |
# |
265 |
# |
266 |
def fmt_html_footer(self) : |
266 |
def fmt_html_footer(self) : |
267 |
print '''</table>''' |
267 |
print('''</table>''') |
268 |
|
268 |
|
269 |
|
269 |
|
270 |
# |
270 |
# |
Lines 515-527
Link Here
|
515 |
elif o == '-s': |
515 |
elif o == '-s': |
516 |
opt_sort_field = v |
516 |
opt_sort_field = v |
517 |
elif o == '-h': |
517 |
elif o == '-h': |
518 |
print "Usage: flow-rptfmt [-hHnp] [-a alarm] [-f format] [-F display_fields]" |
518 |
print("Usage: flow-rptfmt [-hHnp] [-a alarm] [-f format] [-F display_fields]") |
519 |
print " [-m max_lines] [-s sort_field]" |
519 |
print(" [-m max_lines] [-s sort_field]") |
520 |
sys.exit(0) |
520 |
sys.exit(0) |
521 |
|
521 |
|
522 |
|
522 |
|
523 |
def sig_alarm(sig, stack): |
523 |
def sig_alarm(sig, stack): |
524 |
print "flow-rptfmt exceeded CPU time, consider running report offline." |
524 |
print("flow-rptfmt exceeded CPU time, consider running report offline.") |
525 |
sys.exit(0) |
525 |
sys.exit(0) |
526 |
|
526 |
|
527 |
signal.signal(signal.SIGALRM, sig_alarm) |
527 |
signal.signal(signal.SIGALRM, sig_alarm) |
Lines 541-545
Link Here
|
541 |
rpt.dump(opt_format, opt_display_header) |
541 |
rpt.dump(opt_format, opt_display_header) |
542 |
except IOError: |
542 |
except IOError: |
543 |
sys.exit(0) |
543 |
sys.exit(0) |