失败2禁止自定义脚本启动函数



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

  • _init_
  • start: 当 fail2ban 启动时
  • 停止
  • :当失败2禁止停止
  • 禁止
  • :当失败2禁止IP时
  • 禁:当失败2禁止解禁IP时

我在许多监狱中使用此操作,似乎每个监狱 fail2ban 调用 start 函数,并在我的情况下创建一个新的规则 iptables。 所以我有很多重复的iptables规则,因为fail2ban调用了几次启动函数。

我试图提出一个条件。"如果规则不存在,我创建它"。但所有的监狱似乎都是从线程开始的。在这种情况下,我可以将重复规则限制为 2 或 3。

有技巧或永久解决方案吗?也许在启动功能期间的信号量或锁定文件或其他东西?

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

#!/bin/bash
RED='33[0;31m'
GREEN='33[0;32m'
NC='33[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 "$1 starting jail $jail ..."
fail2ban-client reload $jail
echo -e "[${GREEN}OK${NC}] "
done

它将通过使用命令fail2ban-client reload(不适用于fail2ban-client start(并照顾服务器的负载来启动prison.d et中的每个jail。

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

最新更新