|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (1)
просмотр истории страницы... |
| /31 | ≈8640000 | | /32 | ≈17280000 | |
h2. Как дробить на CR7 (ЧЕРНОВИК) {color:#808000}{*}ФАЙЛ НИЖЕ ЯВЛЯЕТСЯ ПРОТОТИПОМ И ЧЕРНОВИКОМ, В ПРОДАКШНЕ РАБОТАТЬ НЕ БУДЕТ{*}{color} {code} #!/bin/bash declare -A app app['bgpd_split_to_prefix']='16' IP_BLOCK_FULL_LIST="$LISTDIR/load/ip_subnet_block.load" check_lists() { # $IP_BLOCK_FULL_LIST должен быть инициализирован в хуке [ -s "$IP_BLOCK_FULL_LIST" ] && return 0 log "Пустой список $IP_BLOCK_FULL_LIST, ждём 2 секунды" sleep 2 [ -s "$IP_BLOCK_FULL_LIST" ] && return 0 log "Не синхронизируем пустой список, алертим и завершаем работу." log "При синхронизации списков IP с маршрутизатором $IP_BLOCK_FULL_LIST оказался пустым" return 1 } __main() { log "tick begin" local DATA_DIR=/var/lib/reductor/ local FILE=$DATA_DIR/ip_block_full local NEW=$FILE.new local OLD=$FILE.old mkdir -p $DATA_DIR/ check_lists || return 0 prepare maskify < "$IP_BLOCK_FULL_LIST" \ | ${HOOKDIR}/split-subnet-list.sh - "${app['bgpd_split_to_prefix']}" > "$NEW" ip_block_full_get | sort -u | maskify > $OLD mikrotik_retry "$OLD" log "На сервере содержится $(wc -l < "$OLD") записей" log "Для полной блокировки имеется $(wc -l < "$NEW") записей" files_to_events "$OLD" "$NEW" | process_events log "tick end" return 0 } # отправить на оборудование команду на блокирование ip адреса ip_block_full_add() { echo "$1" >> /tmp/ip_block } # отправить на оборудование команду на снятие блокировки ip адреса ip_block_full_del() { grep -v "^$1$" /tmp/ip_block > /tmp/ip_block.$$ mv /tmp/ip_block.$$ /tmp/ip_block } # получить список уже заблокированных IP адресов, нужно для вычисления дельты ip_block_full_get() { cat /tmp/ip_block } {code} |