Все остальные ответы обсуждают предложенное вами решение, но я бы хотел предположить, что это проблема XY. Вероятно, вы ищете надежный программный способ проверить, удалось ли завить или нет. Для этого вы должны просто добавить -f
:
curl -fqI http://www.example.com
Это завершается с кодом 0 при успехе и ненулевым при любом сбое (включая ошибки сервера, которые успешно завершают сеанс HTTP, но сообщают об ошибке HTTP. ). В сценарии оболочки, например, вы можете получить доступ к этому коду выхода с помощью $?
сразу после команды, если вы хотите сохранить его в переменной, или использовать оболочки, если
/ &&
/ ||
для условного выполнения другого кода:
if curl -fqI http://www.example.com
then echo 1
else echo 0
fi
Если цель действительно состоит в том, чтобы просто напечатать успех / неуспех, большинство оболочек имеют возможность автоматически отображать ненулевые коды выхода; например, в zsh с setopt printexitvalue
в вашем ~ / .zshrc
вы увидите что-то вроде этого (вывод curl подавлен, чтобы выделить интересный бит):
% curl -fqI http://www.example.com >/dev/null 2>&1
% curl -fqI http://www.aoeuaoeuaoeuaoeu.com >/dev/null 2>&1
zsh: exit 6 curl -fqI http://www.aoeuaoeuaoeuaoeu.com > /dev/null 2>&1
Iptables по умолчанию (по моему опыту) считает пакеты, сопоставленные с его правилами, вам не нужно настраивать это.
По умолчанию он сбрасывается при перезагрузке, но я считаю, что вы можете настроить что-нибудь, чтобы запомнить счетчик.
Поскольку это все равно происходит, я не понимаю, как вы собираетесь «замедлить работу брандмауэра», вы запрашиваете только информацию, которая уже была получена в iptables.
Для просмотра текущего количества пакетов / байтов iptables:
[sudo] iptables -nvL | grep -v '0 0'
-n
- не выполнять поиск в DNS -L
- список правил - по умолчанию отображаются все цепочки (в таблице фильтров ) -v
- это то, что дает информацию о совпадении и количество байтов По умолчанию команда nvL показывает все правила, которые определены, даже если количество совпадений равно 0, поэтому grep -v
просто удаляет эти строки.
Если вам нужно что-то еще «в реальном времени», вы можете заключить команду в оператор watch
watch "[sudo] iptables -nvL | grep -v '0 0'"