У меня есть json с чем-то вроде этого :"number":"OK","number":OK"
, повторяющимся несколько раз в одной строке.
Мой простой счетчик «ОК»:
sed "s|,|\n|g" response | grep -c OK
Самый простой способ сделать интерфейс «только для чтения -» в Linux — это применить к нему выходнойtc
фильтр, который удаляетвсе .
Чтобы применить фильтр, должен быть установлен классовый qdisc . prio qdisc — это простейший классовый qdisc, который используется только для возможности использования фильтров в интерфейсе, а не для собственных функций.
В конце установить интерфейс eth1 «только для чтения -»:
tc qdisc add dev eth1 root prio
tc filter add dev eth1 matchall action drop
Это блокирует исходящий трафик на этом интерфейсе. Он даже блокирует сокеты RAW (, на которые в противном случае не влияют брандмауэры ), поэтому будет блокировать DHCP-клиент IPv4 (, который в противном случае может получить адрес, несмотря на брандмауэр ). Есть еще способы обойти это, но это может быть только очень преднамеренным. Вот два, о которых я знаю:
PACKET_QDISC_BYPASS
для необработанного сокета Чтобы вернуть интерфейс в исходное состояние, просто удалите qdisc:
tc qdisc del dev eth1 root
Примечания:
Я предполагаю, что коммутатор с портом, установленным в режиме зеркального отображения, вероятно, уже установил этот порт в режим -только для чтения.
Это надо проверить. И если это правда, использование фильтра выше или маркера 2. ниже становится спорным.
интерфейс, который находится в состоянии UP и к которому не применяются дополнительные настройки, все еще может обмениваться трафиком
Без предыдущего фильтра даже ненастроенный, но работающий интерфейс может оставить трафик.Есть по крайней мере эти два случая:
Автоматическая настройка IPv6
использоватьsysctl -w net.ipv6.conf.eth1.disable_ipv6=1
Если ARP не отключен (с помощьюip link set eth1 arp off
)
Этот случай аналогичен более общему случаю утечки информации, когда система в локальной сети может проверить, не используют ли некоторые системы другие сети (, включая виртуальные )с общеизвестными адресами :, по умолчанию в Linux интерфейс будет отвечать на запросы ARP для любого другого адреса на любом другом интерфейсе. Эточасть слабой модели хоста .
Так, например, если в системе OP работает livbirt QEMU/KVM с настройками по умолчанию, 192.168.122.1/24 назначено virbr0 , тогда другая система Linux, подключенная только к ненастроенному интерфейсу UP, все равно получит ARP отвечает через него при запуске:
arping -I eth0 192.168.122.1
Неважно, есть ли у зондирующей системы маршрут к 192.168.122.1. Речь идет об ARP (и команде, которая не заботится о маршрутах ). То же самое о LXC и 10.0.3.1 и т. д.