Вы просматриваете старую версию данной страницы. Смотрите текущую версию.
Сравнить с текущим |
просмотр истории страницы
Нужно выполнить следующие шаги:
Необходимо создать сам хук:
touch /app/reductor/cfg/userinfo/hooks/events.sh
chmod a+x /app/reductor/cfg/userinfo/hooks/events.sh
Наполнить его следующим содержимым:
#!/bin/bash
- Данный скрипт является хуком, а не утилитой.
- Не смущайтесь, что здесь ничего не вызывается напрямую.
- Не смущайтесь, что здесь есть неопределённые переменные.
- Вся логика по сравнению списков IP адресов в основном скрипте.
- Её не надо трогать. От вас нужно только описать 3.5 функции:
- - SSH - способ передачи команды с stdin на оборудование
- - ip_block_full_add/del/get.
- Не нужно что-то изобретать, всё готово, нужно только описать эту прослойку!
SSH="/usr/bin/ssh -T carbon@<ip вашего роутера> bash"
- отсекаем лишнее из вывода ipset
__only_ip()Unknown macro: { egrep -o "$ip_or_ipmask_regex" | sed -E "s|^$ip_regex$|&/32|g" }
- отправить на оборудование команду на блокирование ip адреса
ip_block_full_add()Unknown macro: { local ip="$1" echo "/sbin/ipset add reductorblock $ip" | $SSH }
- отправить на оборудование команду на снятие блокировки ip адреса
ip_block_full_del()Unknown macro: { local ip="$1" echo "/sbin/ipset del reductorblock $ip" | $SSH }
- получить список заблокированных ip адресов
ip_block_full_get()Unknown macro: { echo "/sbin/ipset save reductorblock" | $SSH | __only_ip }
Чтобы всё заработало нужно:
1. Создать нужный ipset с hash типом net на роутере
2. Указать правильные IP адрес роутера и логин в переменной $SSH
3. Выполнить один раз руками ssh-copy-id root@$ip_роутера
4. Проверить вручную команду TIMEOUT=0 chroot /app/reductor /usr/local/Reductor/bin/events.sh