EvangelionDeath, да я уж понял, что баш разный бывает) Учту на будущее)
Пользователь добавил сообщение 01 Февраля 2018, 21:06:02:
Камрад Ввысь попросил еще белый список прикрутить. Выложу тоже, чтоб не потерялось, да и критика приветствуется.
#!/bin/bash
YIP='167.9.106.116' #свой айпишник
PTS='7777' #начало диапазона портов
PTE='8020' #конец диапазона портов
#сильно большой диапазон не ставьте - долго выполняться будет
TRY='3' #на сколько портов должет постучаться бот
VIP='файл_с_белыми_ip'
TMP=$(mktemp)
soun() {
sort $1 | uniq
}
for i in $(seq $PTS $PTE); do
grep -Eo "$YIP:$i ([0-9]{1,3}\.){3}[0-9]{1,3}" \
"$1" | sed "s/$YIP://">> $TMP
done
[[ ! -e $TMP ]] && echo "Всё в порядке" && exit 0
if [[ -n "$VIP" ]] ; then
while read P; do
[[ -z $P ]] && continue
sed -i "/$P/d" $TMP
done < "$VIP"
fi
soun $TMP > ${TMP}_sus
while read j ; do
CN=$(grep -c $j ${TMP}_sus)
if (( CN >= TRY )); then
echo $j >> ${TMP}_ban
fi
done < <(cat ${TMP}_sus | cut -d\ -f2)
[ ! -e ${TMP}_ban ] && echo 'Всё в порядке' && exit 0
soun ${TMP}_ban > "${1}_banned"
echo "Плохие IP:"
cat "${1}_banned"
echo "Записано в ${1}_banned"
rm $TMP ${TMP}_sus ${TMP}_ban &> /dev/null