i formulate infinity and store it deep inside of me

Powered by Astir.News engine

Быстрый бан ip через ipfw

25 апреля 2009, 20:08

С простой проверкой на валидность введенного ip. Переменные: oif - имя интефейса, rule - номер правила, fwcmd - путь к ipfw

banip.sh :

#!/bin/sh

fwcmd="/sbin/ipfw"
oif="bce0"
rule=804


if [ -z $1 ]; then
echo "Enter ip to ban!"
exit
elif [ -n $1 ]; then

RESULT=$(echo "$1" | perl -e '$i=<>;if($i!~/^d+.d+.d+.d+$/){print"0";}else{($a,$b,$c,$d)=$i=~/^(d+).(d+).(d+).(d+)$/;if($a>255or$b>255or$c>255or$d>255){print"0";}else{print"1";}}')
if [ $RESULT -eq 0 ]; then
echo "Bad IP address: $1"
exit
else
echo "Deny tcp from $1 to any via ${oif}"
$fwcmd add ${rule} deny tcp from $1 to any via ${oif}
fi

fi

Tags: ipfw , perl , sh