Либо используйтеgrep -E
(современную форму для egrep
), чтобы |
рассматривалось как расширенное регулярное выражение оператор чередования , но тогда вам нужно экранировать все остальные операторы регулярного выражения (как .
, ?
, *
, ^
, $
, \
, [
, (
, )
, {
,}
)в вашем фиксированные строки .
Или используйте -F
и передавайте строки по одной в строке или несколькими -e
с:
grep -Fe string1 -e string2 -e string3
Или:
grep -F 'string1
string2
string3'
Добавьте параметр -x
, если эти фиксированные строки должны составлять всю совпадающую строку (, а не находиться в любом месте в пределах строки без нее ). Большинство реализаций grep
также имеют параметр -w
для соответствия слову , где, например, string1
будет соответствовать внутри foo string1-2
, но не внутри foostring12
.
Для вашего конкретного примера в комментариях это будет:
grep -wE 'Allow from (8\.8\.2\.5|192\.3\.0\.4)|DenyAll'
Или:
grep -we 'Allow from 8.8.2.5' -e 'Allow from 192.3.0.4' -e 'DenyAll'
Вам нужно либо -w
, либо -x
(, предполагая, что это целые строки, даже не пробелы вокруг )здесь, так как в противном случае он также будет совпадать в строках, подобных Allow from 8.8.2.51
.
Вы также можете написать это:
grep -xE '[[:space:]]*(Allow from (8\.8\.2\.5|192\.3\.0\.4)|DenyAll)[[:space:]]*'
Для соответствия всей строке (-x
), но разрешая начальные и конечные символы пробела (здесь с использованием [[:space:]]
вместо [[:blank:]]
, чтобы также разрешить символы CR, найденные в конце строк, исходящих из MS -Мир DOS ).
Чтобы искать эти фиксированные строки в любом месте строки, но не внутри комментариев, необходимо убедиться, что часть строки, ведущая к этим фиксированным строкам, не содержит #
символов. Что-то вроде:
grep -wE '^[^#]*(Allow from (8\.8\.2\.5|192\.3\.0\.4)|DenyAll)'
Обратите внимание, что -w
не применяется к Allow
, поскольку применяется ко всей совпадающей строке. Например, это будет соответствовать GAllow from
. Некоторые реализации grep
поддерживают \<
, \>
для соответствия границам слов явно (, также известным как \b
в некоторых):
grep -E '^[^#]*\<(Allow from (8\.8\.2\.5|192\.3\.0\.4)|DenyAll)\>'
Также обратите внимание, что в apache2
директивы конфигурации нечувствительны к регистру и между словами допускается любое количество пробелов. Кроме того, я подозреваю, что вы имели в виду Deny from all
вместо DenyAll
, так что, возможно, вы захотите:
grep -iE '^[^#]*\<(allow[[:blank:]]+from[[:blank:]]+(8\.8\.2\.5|192\.3\.0\.4)|deny[[:blank:]]+from[[:blank:]]+all)\>'
- Why does a virtual bridge need an IP address when a physical one does not?
Существует заблуждение, что виртуальному мосту нужен IP-адрес. Это не нужно.
На самом деле вы можете иметь виртуальный мост без IP-адреса. Но тогда сам хост вообще не будет доступен по IP на этом физическом интерфейсе :, только виртуальные машины.
Это может быть полезно на узле виртуализации предприятия. :У вас может быть клиентская сеть, которую необходимо подключить к клиентским виртуальным машинам. Возможно, вы не захотите предоставлять доступ из такой сети к самому хосту виртуализации, а только к соответствующим виртуальным машинам. Тогда у вас будет другая, физически отдельная сеть управления, которую вы будете использовать для администрирования хостов виртуализации. Эта сеть будет подключена к хосту через отдельную сетевую карту, которая не будет членом какого-либо виртуального моста.
- How does the physical NIC know to use the virtual bridge's IP address when the NIC doesn't have one?
Если физический сетевой адаптер не имеет специальных функций ускорения IPv4, IP-адрес является просто полезными данными для сетевого адаптера. Базовая физическая сетевая карта работает только с уровнем -2, то есть с MAC-адресами. IP-протокол — это уровень -3, который обычно остается для стека сетевых драйверов операционной системы. Когда вы «настраиваете IP-адрес для сетевой карты» с помощью ifconfig
или ip addr
, вы не обязательно вносите какие-либо изменения в реальную конфигурацию физического оборудования, но в абстрактную конструкцию, которая включает в себя как физическую сетевую карту, так и ОС -уровень поддержки IP-протокола, связанного с сетевой картой.
Когда физическая сетевая карта настроена на работу в качестве члена моста, все функции ускорения Уровня -3, возможно, придется отключить в любом случае. :При работе в качестве части моста сетевая карта должна все входящие пакеты, независимо от MAC-адреса или IP-адреса назначения, и код моста будет решать, будет ли пакет пересылаться и какому члену моста. Базовый мост вообще не должен заботиться об IP-адресах. Любая функциональность Уровня -3 в мосте выходит за рамки базовой функциональности моста и является/должна быть необязательной в виртуальном мосту.
Если физический сетевой адаптер сконфигурирован с IP-адресом при настройке в качестве части моста, он активирует функцию ARP на этом сетевом адаптере (+ его драйвере ). Но исходящие сообщения ARP от этой физической сетевой карты не смогут достичь виртуальных машин :, чтобы достичь всего сегмента с их ARP (, поскольку для надлежащей функциональности уровня -2 требуется ), драйвер сетевой карты должен будет генерировать сообщение ARP как исходящее и входящее сообщение одновременно, и у драйвера сетевой карты не будет кода для этого.
Наличие виртуального моста с виртуальными машинами означает, что некоторые части IP-сегмента моста будут физически находиться за пределами хоста, а другие будут содержаться в виртуальных машинах, расположенных внутри хоста. Если бы хост, как обычно, использовал сетевую карту для связи с одной из виртуальных машин, пакеты без необходимости отправлялись бы с хоста на физический коммутатор или маршрутизатор, к которому подключен хост, а оттуда им пришлось бы вернуться к хосту и через мост к виртуальной машине назначения.
Это, безусловно, было бы неэффективно и могло бы вообще не работать. :У физического коммутатора, к которому подключен хост с виртуальным мостом, обычно не было бы причин отправлять какие-либо пакеты, исходящие от этого хоста, обратно на сам хост..
Вместо этогоИсходящие пакеты от хоста к сетевому сегменту моста должны быть отправлены через код моста, который сначала ищет, какой интерфейс моста (, виртуальный или физический ), будет «ближайшим» к месту назначения. Если адресат известен мосту, исходящий пакет отправляется прямо к нему. Для связи между хостом и его виртуальными машинами это означает, что связь происходит полностью внутри физического хоста и вообще не использует пропускную способность физической сети за пределами хоста.
Если MAC-адрес получателя неизвестен мосту, исходящие пакеты сначала рассылаются через все интерфейсы-члены моста. :Как только получен ответ, мост узнает местоположение получателя пакет и может вернуться к эффективному методу работы (, как указано выше ).
При отправке запросов ARP от хоста, содержащего мост, запросы должны транслироваться как виртуальным машинам , так и из физического сетевого адаптера, чтобы запросы фактически отправлялись на весь сегмент сети :код моста может это сделать, а отдельный физический сетевой адаптер не может.
Я думаю, что нет требования, чтобы мост Linux был исключительно физическим или виртуальным :Я не понимаю, почему мост Linux не может иметь несколько физических интерфейсов и любое количество виртуальных машин, связанных с Это. Но в корпоративной среде вы, как правило, не хотели бы создавать такой хост «делай -все». Он может легко превратиться в сложную, критически важную часть инфраструктуры, которая не может иметь простоев никогда; иными словами, головная боль для системных администраторов.
- Why do VMs need to communicate with the bridge while physical machines don't actually communicate with a physical bridge directly?
Опять неправильное представление :о том, что виртуальным машинам не нужен IP-адрес на мосту "для связи с мостом" как таковой.
Но если вы хотите, чтобы хост и виртуальные машины могли взаимодействовать друг с другом в одном сегменте IP-сети, можно назначить IP-адрес мостовому устройству.
IP-адрес на мостовом устройстве предназначен в первую очередь для удовлетворения коммуникационных потребностей хоста , а не виртуальных машин -, но он может позволить хосту обмениваться данными с виртуальными машинами через IP эффективно без зацикливания на внешних устройствах, если это то, что вам нужно.