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}