我已经为fail2ban做了自己的自定义操作。它是用Python编写的脚本。我根据文档创建了以下功能:
我在许多监狱中都使用了这个操作,似乎每个监狱都需要fail2ban调用start函数,并且在我的例子中创建了一个新的规则iptables。因此,我有许多重复的iptable规则,因为fail2ban多次调用启动函数。
我试着提出一个条件。“如果规则不存在,我就创造它”。但是所有的监狱似乎都是以线程方式开始的。有了这个条件,我可以将重复规则限制为2或3。
有什么诀窍或永久的解决办法吗?可能是在启动函数期间使用信号量,或者锁定文件或其他什么?
发布于 2017-08-02 19:47:17
因此,我使用以下脚本解决了我的问题:
#!/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[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它将使jail.d中的每个监狱都能启动它们,方法是使用命令fail2ban-client重新加载(不适用于fail2ban-client start )并负责服务器的负载。
监狱不会一个接一个地启动,我的初始条件也会正常工作。
https://stackoverflow.com/questions/45174964
复制相似问题