У меня есть такой файл журнала:
Frq:15 IP:0.0.0.0 Date: 2014-03-21 12:19:31 AM
Frq:9 IP:198.252.206.25 Date: 2014-03-21 12:19:31 AM
Теперь я получаю столбец IP-адресов с awk:
cat /tmp/test | awk '{print $2}'|awk '{gsub("IP:", "");print}'
И вот результат:
0.0.0.0
198.252.206.25
Я хочу добавить этот IP-адрес в iptables, чтобы он был удален из INPUT, но я не знаю, как
Спасибо, друзья.
Вы продвинетесь вперед, расширив fail2ban добавив специальный файл конфигурации в его .d
каталог config.
Работайте как можно меньше!
Вы можете просто написать сценарий, который будет перебирать ваши awk
результат и создает соответствующие iptables
правила на лету:
#!/bin/sh
cat /tmp/test | awk '{print $2}'|awk '{gsub("IP:", "");print}' | while read IP
do
iptables -A INPUT -s $IP -j DROP
done
Однако я не знаю вашего контекста и того, как можно доверять вашему файлу журнала, но это опасно, и вам следует выяснить, какие IP-адреса вы отбрасываете.
Для примера следующее делает исключение для 127.0.0.1
:
#!/bin/sh
cat /tmp/test | awk '{print $2}'|awk '{gsub("IP:", "");print}' | while read IP
do
if [ "$IP" != "127.0.0.1" ]; then
iptables -A INPUT -s $IP -j DROP
fi
done
Моя попытка:
awk '{sub("IP:", "", $2); print $2}' /tmp/test | xargs -n1 -I{} iptables -A INPUT -s {} -j DROP