У меня ОЧЕНЬ старая версия ядра, которую я не могу обновить из-за тупого «босса, который думает, что знает все». Мне нужно либо уволить моего босса, либо создать сценарий bash, который может добавлять правило iptable каждый раз, когда он читает другой ip с помощью dmesg. Как я могу это сделать. На данный момент у меня есть это, который работает хорошо, но он продолжает дублировать IP по очевидным причинам того, как там работает iptable. Мне нужно найти способ, прежде чем добавлять IP-адрес, я хочу убедиться, что он НЕ находится в списке iptable:
for BADIP in $(dmesg | grep 'Treason uncloaked!' | cut -d' ' -f6 | cut -d':' -f1 | sort --unique)
do
iptables -A INPUT -s $BADIP -j DROP
done
Почему бы просто не использовать Fail2Ban? Установить для него фильтр должно быть достаточно просто.
Однако что-то вроде следующего также будет работать.
for BADIP in $(dmesg | grep 'Treason uncloaked!' | cut -d' ' -f6 | cut -d':' -f1 | sort --unique) do iptables -L INPUT | grep $BADIP if [ $? -ne 0 ] then iptables -A INPUT -s $BADIP -j DROP fi done
Не проверено, но основы таковы, что $? это код выхода последней команды. Если grep находит IP-адрес, он выйдет с 0. Если grep не сможет найти IP-адрес, он будет ненулевым, и будет выполнено условие if.