fail2ban 自定义脚本启动函数

fail2ban custom script start function

我已经为 fail2ban 制作了自己的自定义操作。它是在 Python 中编写的脚本。 我根据文档创建了以下函数:

我对许多监狱都使用了这个操作,似乎每个监狱都 fail2ban 调用启动函数,在我的例子中创建一个新规则 iptables。 所以我有很多重复的 iptables 规则,因为 fail2ban 多次调用启动函数。

我试过提出条件。 "If the rule doesn't exist I create it"。但是所有的监狱似乎都是在线程中启动的。在这种情况下,我可以将重复规则限制为 2 或 3。

有什么窍门或者治本之策吗?也许在启动函数期间发出信号量或锁定文件或其他东西?

所以我使用以下脚本解决了我的问题:

#!/bin/bash

RED='3[0;31m'
GREEN='3[0;32m'
NC='3[0m' # No Color

/usr/bin/fail2ban-server 

grep "^\[" /etc/fail2ban/jail.d/* | grep -v "#" | cut -d"[" -f 2 | cut -d "]" -f 1 | while read jail
do
    load=$(uptime | cut -d ":" -f5 | cut -d"," -f 1)
    compare=$(bc <<< "$load>3")
    while [[ $compare -eq "1" ]]
    do
        echo -e "Load too ${RED}high${NC} ($load) .... sleep 5 secondes"
        sleep 5
        load=$(uptime | cut -d ":" -f5 | cut -d"," -f 1)
        compare=$(bc <<< "$load>3")
    done    

    echo -n -e " starting jail $jail ..."
    fail2ban-client reload $jail
    echo -e "[${GREEN}OK${NC}] "

done

它将获得 jail.d 中的每个监狱,并通过使用命令 fail2ban-client reload(不适用于 fail2ban-client start )启动它们并注意服务器的负载。

监狱不会一个接一个开始,我的初始条件会起作用