Необходимо создать сам хук:
[root@rReductor]# touch /usr/local/Reductor/userinfo/hooks/events.sh [root@rReductor]# chmod a+x /usr/local/Reductor/userinfo/hooks/events.sh
Наполнить его следующим содержимым:
#!/bin/bash SSH="/usr/bin/ssh -T <username>@<ip_adress>" # отсекаем лишнее из вывода ipset __only_ip() { grep add | egrep -o "$ip_regex" } # Отправляем на оборудование команду на блокирование ip адреса ip_block_full_add() { local ip="$1" echo "/ip firewall address-list add list=reductor_ip_block_list address=$ip comment=${ip}_reductor_ip_block" | $SSH } # Отправляем на оборудование команду на снятие блокировки ip адреса ip_block_full_del() { local ip="$1" echo "/ip firewall address-list remove numbers=${ip}_reductor_ip_block" | $SSH } # # Получаем список заблокированных IP ip_block_full_get() { # один раз руками вызываем и забываем, конфиг микротика - дело админа mikrotik_firewall_prepare echo "/ip firewall address-list print where list=reductor_ip_block_list" | $SSH | __only_ip }
Предварительно на самом Микротике выполняем две команды:
# Прописываем дропающее правило и свою цепочку, ставим себя ранее всех цепочек ip firewall filter add chain=reductor_forward comment=reductor_ip_block dst-address-list=reductor_ip_block_list action=drop ip firewall filter add chain=forward action=jump jump-target=reductor_forward place-before=0
Чтобы всё заработало нужно:
1. Указать правильный IP адрес Микротика в переменной $SSH
2. Выполнить один раз руками ssh-copy-id root@$IP-микротика
3. Проверить вручную команду TIMEOUT=0 /usr/local/Reductor/bin/events.sh
