我有一个日志文件,其中的行如下所示:
private static CardLayout cards;
private static JPanel panel;
private Main() {
super("Card Layout");
setBounds(0, 0, 500, 500);
setDefaultCloseOperation(3);
panel = new JPanel();
add(panel);
cards = new CardLayout();
JPanel p1 = new JPanel();
p1.setBackground(Color.WHITE);
JPanel p2 = new JPanel();
p2.setBackground(Color.BLACK);
JPanel p3 = new JPanel();
p3.setBackground(Color.RED);
JPanel p4 = new JPanel();
p4.setBackground(Color.BLUE);
panel.add("white", p1);
panel.add("black", p2);
panel.add("red", p3);
panel.add("blue", p4);
panel.setLayout(cards);
// cards.next(panel); This works fine for me.
cards.show(panel, "red");
setVisible(true);
}
public static void main(String[] args) {
new Main();
}
我在Fail2ban中使用以下正则表达式设置了过滤器:
2019-12-21 20:30:02 index [WARNING]: authenticate: failed login attempt {"action":"login","username":"tgbtgbtgbtgb","ip":"61.142.184.152"} - {"file":"Login.php","line":147, ...
不幸的是,Fail2ban无法捕获基于上述正则表达式的失败登录尝试。有什么问题吗?
\"%Y-%m-%d %H:%M:%S\" index [WARNING]: authenticate: failed login attempt {\"action\":\"login\",\"username\":\".*\",\"ip\":\"<HOST>\".*
中的配置块为:
/etc/fail2ban/jail.local
此外,Fail2ban可以读取日志文件。谢谢您的帮助!
答案 0 :(得分:0)
Fail2ban在开始搜索datepattern
的匹配项之前从字符串中删除匹配的时间戳failregex
。
因此,您只需删除\"%Y-%m-%d %H:%M:%S\"
。
或者更好地使用这样的东西:
failregex = ^\s*\S*\s+\[WARNING\]: authenticate: failed login attempt \{(?:"(?!ip")[^"]+":(?:"(?:[^"]|\\")*(?!\\)"|[^,]*),\s*)*"ip":"<HOST>"
这是更安全的方法-预先锚定,并且如果看起来像json的部分在它们之间(标签顺序等)发生变化,则它也会匹配。
(?:"(?!ip")[^"]+":(?:"(?:[^"]|\\")*(?!\\)"|[^,]*),\s*)*
部分是json dict元素的“简单”匹配器,绕过了"ip"
以外的任何标签。