Назад | Перейти на главную страницу

сбросить IP-адреса с помощью iptables из результата awk

У меня есть такой файл журнала:

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