LINUX.ORG.RU

История изменений

Исправление vodz, (текущая версия) :

Буду разбираться)

Да это не вам было. Это была только демонстрация аналога. Если вы проходили ассоциативные массивы, то красивее будет так:

#!/usr/bin/env bash

TRIG=10
declare -Ai A
R='(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}'

while read l; do
        [[ $l =~ $R ]] && A["${BASH_REMATCH[0]}"]+=1
done < filelog
while read l; do
        iptables -A INPUT -s $l -j DROP
done < <(for l in ${!A[*]}; do [[ A["$l"] -ge TRIG ]] && echo $l; done |
                sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4)

Исходная версия vodz, :

Буду разбираться)

Да это не вам было. Это была только демонстрация аналога. Если вы проходили ассоциативные массивы, то красивее будет так:

#!/usr/bin/env bash

TRIG=10
declare -Ai A
R='(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}'

while read l; do
        [[ $l =~ $R ]] && A["${BASH_REMATCH[0]}"]+=1
done < filelog
while read l; do
        iptables -A INPUT -s $l
done < <(for l in ${!A[*]}; do [[ A["$l"] -ge TRIG ]] && echo $l; done |
                sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4)