Ajuda shell script / Ignorar IPs em arquivo [RESOLVIDO]

1. Ajuda shell script / Ignorar IPs em arquivo [RESOLVIDO]

Bernardo Rhee
BernardoCR

(usa FreeBSD)

Enviado em 16/06/2014 - 22:13h

Boa noite,

Eu tenho um script que serve para derrubar as conexões da minha máquina, mas preciso que o script ignore alguns IPs cadastrados no arquivo whitelist.txt.

Alguém poderia me ajudar como fazer isso?

O código é este aqui:

while sleep 5; do
for i in `netstat -n -f inet | grep "ESTAB" | awk '{print $5}' | sed -E 's/\.[0-9]+$//' | sort | uniq -c | awk '($1 > 20){print $2}'`; do
echo $i
pfctl -t flooders -T add $i
pfctl -k $i
done
done



  


2. MELHOR RESPOSTA

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 17/06/2014 - 00:58h

Faça diferente. Do jeito q falei não vai dar certo:


while sleep 5; do
for i in `netstat -n -f inet | grep "ESTAB" | awk '{print $5}' | sed -E 's/\.[0-9]+$//' | sort | uniq -c | awk '($1 > 20){print $2}'`; do
for j in $(cat /etc/whitelist.txt)
do
if [ "$i" != "$j" ]
then
echo $i
pfctl -t flooders -T add $i
pfctl -k $i
fi
done
done
done


Torcendo pra dar certo! Heheheh!

3. Re: Ajuda shell script / Ignorar IPs em arquivo [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 16/06/2014 - 22:55h

Rola de vc fazer um if antes para comparação:


while sleep 5; do
for i in `netstat -n -f inet | grep "ESTAB" | awk '{print $5}' | sed -E 's/\.[0-9]+$//' | sort | uniq -c | awk '($1 > 20){print $2}'`; do
if [ "$i" != "${cat /etc/whitelist.txt}" ]
then
echo $i
pfctl -t flooders -T add $i
pfctl -k $i
fi
done
done




4. Re: Ajuda shell script / Ignorar IPs em arquivo [RESOLVIDO]

Bernardo Rhee
BernardoCR

(usa FreeBSD)

Enviado em 17/06/2014 - 00:02h

Retornou isso aqui:

./filter1.sh: line 4: ${cat /usr/local/etc/ddos/whitelist.txt}: substituição incorreta


5. Re: Ajuda shell script / Ignorar IPs em arquivo [RESOLVIDO]

Bernardo Rhee
BernardoCR

(usa FreeBSD)

Enviado em 17/06/2014 - 01:04h

Ele acabou adicionando os IPs no firewall, mesmo os que estavam no whitelist.txt.

Acabei fazendo desta forma e deu certo:

#!/usr/local/bin/bash

while sleep 10; do
# for i in `netstat -n -f inet | grep "ESTAB" | awk '{print $5}' | sed -E 's/\.[0-9]+$//' | sort | uniq -c | awk '($1 > 15){print $2}'`; do
for i in `netstat -n -f inet | awk '{print $5}' | sed -E 's/\.[0-9]+$//' | sort | uniq -c | awk '($1 > 30){print $2}'`; do
echo $i
if grep -Fxq $i whitelist.txt; then
echo $i is in whitelist;
else
pfctl -t flooders -T add $i
pfctl -k $i
fi
done
done

Muito obrigado pela ajuda!
Valeu!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts