SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы
НазадМетки:
Внимание
root # time /etc/badguys.py -a XXX.XXX.XXX.XXX
Очистка таблицы межсетевого экрана Загрузка списка IP в таблицу межсетевого экрана 5.108u 15.048s 0:21.35 94.3% 33+169k 0+1io 0pf+0w
root #time /etc/badguys.sh add XXX.XXX.XXX.XXX
Сортировка списка IP адресов Загрузка списка IP в таблицу файервола 1.492u 4.500s 0:06.23 96.1% 113+173k 0+2io 1pf+0w
Файл:
/etc/badguys.sh
#!/bin/sh -
echo "Скрипт интерактивного добавления IP или подсети в бан лист файервола"
echo "Установка переменных"
table=${table:="2"}
filename=${filename:="/etc/badguys.list"}
tmpfile=`mktemp /tmp/badguys.XXX`
tmpdialog=`mktemp /tmp/dialog.XXX`
DIALOG=${DIALOG:=/usr/bin/dialog}
reload() {
echo
echo "Очистка таблицы файервола"
ipfw table ${table} flush
sort_list
echo "Загрузка списка IP в таблицу файервола"
for i1 in `cat ${filename}`;
do
ipfw table ${table} add $i1
done
}
# Сортировка списка IP адресов
sort_list() {
echo "Сортировка списка IP адресов"
sort -n ${filename} > ${tmpfile}
uniq ${tmpfile} ${filename}
}
# Показ списка IP адресов
print_list() {
if [ -n "$2" ]; then
less ${filename}
else
grep $2 ${filename}
fi
}
print_help() {
echo
case $2 in
add)
echo "Без параметров вызывает диалоговое окно добавления"
echo "Параметр после add добавляется в файл и таблица перезагружается"
;;
*)
echo "add - добавление нового IP"
echo "delete - удаление файла"
echo "clear - очистка таблицы"
echo "help - помощь"
echo "list - показать бан лист"
echo "sort - сортировка списка"
;;
esac
}
case $1 in
add)
isip=`echo $2 | grep -E -o '[0-9]{1,3}(\.[0-9]{1,3}){3}'`
if [ ${isip} != "" ]
then
echo ${isip} >> ${filename}
reload
else
${DIALOG} --inputbox "Добавить новый IP или подсеть" 10 40 2> ${tmpdialog}
ip=`cat ${tmpdialog}`
echo ${ip} >> ${filename}
reload
fi
;;
clear)
ipfw table ${table} flush
;;
delete)
rm -rf ${filename}
;;
help)
print_help $2
;;
list)
print_list
;;
sort)
sort_list
;;
*)
reload
print_help
;;
esac
rm -rf ${tmpdialog}
rm -rf ${tmpfile}