Browse Source

Add a --print-all-matched option.

The default behavior, to not print any matched lines, is unchanged.
pull/652/head
Hank Leininger 11 years ago
parent
commit
2d42b46a7c
Failed to extract signature
  1. 10
      bin/fail2ban-regex

10
bin/fail2ban-regex

@ -142,6 +142,8 @@ Report bugs to https://github.com/fail2ban/fail2ban/issues
help="Do not print any missed lines"), help="Do not print any missed lines"),
Option("--print-no-ignored", action='store_true', Option("--print-no-ignored", action='store_true',
help="Do not print any ignored lines"), help="Do not print any ignored lines"),
Option("--print-all-matched", action='store_true',
help="Print all matched lines"),
Option("--print-all-missed", action='store_true', Option("--print-all-missed", action='store_true',
help="Print all missed lines, no matter how many"), help="Print all missed lines, no matter how many"),
Option("--print-all-ignored", action='store_true', Option("--print-all-ignored", action='store_true',
@ -187,6 +189,7 @@ class LineStats(object):
""" """
def __init__(self): def __init__(self):
self.tested = self.matched = 0 self.tested = self.matched = 0
self.matched_lines = []
self.missed = 0 self.missed = 0
self.missed_lines = [] self.missed_lines = []
self.missed_lines_timeextracted = [] self.missed_lines_timeextracted = []
@ -210,6 +213,7 @@ class Fail2banRegex(object):
self._maxlines = 20 self._maxlines = 20
self._print_no_missed = opts.print_no_missed self._print_no_missed = opts.print_no_missed
self._print_no_ignored = opts.print_no_ignored self._print_no_ignored = opts.print_no_ignored
self._print_all_matched = opts.print_all_matched
self._print_all_missed = opts.print_all_missed self._print_all_missed = opts.print_all_missed
self._print_all_ignored = opts.print_all_ignored self._print_all_ignored = opts.print_all_ignored
self._maxlines_set = False # so we allow to override maxlines in cmdline self._maxlines_set = False # so we allow to override maxlines in cmdline
@ -366,6 +370,8 @@ class Fail2banRegex(object):
if len(ret) > 0: if len(ret) > 0:
assert(not is_ignored) assert(not is_ignored)
self._line_stats.matched += 1 self._line_stats.matched += 1
if self._print_all_matched:
self._line_stats.matched_lines.append(line)
else: else:
if not is_ignored: if not is_ignored:
self._line_stats.missed += 1 self._line_stats.missed += 1
@ -387,7 +393,7 @@ class Fail2banRegex(object):
if lines: if lines:
header = "%s line(s):" % (ltype.capitalize(),) header = "%s line(s):" % (ltype.capitalize(),)
if self._debuggex: if self._debuggex:
if ltype == 'missed': if ltype == 'missed' or ltype == 'matched':
regexlist = self._failregex regexlist = self._failregex
else: else:
regexlist = self._ignoreregex regexlist = self._ignoreregex
@ -451,6 +457,8 @@ class Fail2banRegex(object):
print "\nLines: %s" % self._line_stats print "\nLines: %s" % self._line_stats
if self._print_all_matched:
self.printLines('matched')
if not self._print_no_ignored: if not self._print_no_ignored:
self.printLines('ignored') self.printLines('ignored')
if not self._print_no_missed: if not self._print_no_missed:

Loading…
Cancel
Save