Необходимо создать сам хук:
chroot /app/reductor
touch /cfg/userinfo/hooks/events.sh
chmod a+x /cfg/userinfo/hooks/events.sh
Наполнить его следующим содержимым:
#!/bin/bash SSH="/usr/bin/ssh -T carbon@<ip вашего роутера> bash" IPSET=xge_reductor_ip_block # отсекаем лишнее из вывода ipset __only_ip() { egrep -o "$ip_or_ipmask_regex" | sed -E "s|^$ip_regex$|&/32|g" } # отправить на оборудование команду на блокирование IP адреса ip_block_full_add() { local ip="$1" echo "/usr/sbin/ipset add $IPSET $ip" | $SSH } # отправить на оборудование команду на снятие блокировки IP адреса ip_block_full_del() { local ip="$1" echo "/usr/sbin/ipset del $IPSET $ip" | $SSH } # получить список заблокированных IP адресов ip_block_full_get() { echo "ipset save $IPSET" | $SSH | __only_ip }
Чтобы всё заработало нужно:
P.S. Не работает на не стандартных портах при старом ssh-copy-id. Решение добавить ключи вручную, либо передать пароль в явном виде.
- Указать правильный IP адрес XGE в переменной $SSH
- Сгенерировать ключи (на все вопросы - enter):
chroot /app/reductor /usr/bin/ssh-keygen
- Выполнить один раз
chroot /app/reductor /usr/bin/ssh-copy-id root@$IP-адрес-xge
- Проверить выполнение команды
chroot /app/reductor
TIMEOUT=0 /usr/local/Reductor/bin/events.sh - Всю папку .ssh/ необходимо скопировать по пути /app/reductor/cfg/ чтобы ключи не пропали при обновлении:
chroot /app/reductor/
mkdir -p /cfg/root/.ssh/
cp /root/.ssh/* /cfg/root/.ssh/