История изменений
Исправление 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)