Инкапсуляция команды Backtick

Во-первых, вы не устанавливаете для eth0 и eth1 значение 0.0.0.0, вместо этого вы вообще не назначаете IP-адрес. (Но, возможно, ваш 0.0.0.0 не будет считаться IP-адресом, не уверен - никогда не пробовал). Затем вы назначаете мосту IP-адрес.

# ip addr ls
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
⋮
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master lan-br state UP group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
3: lan-br: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet 192.168.XX.XX/24 brd 192.168.XX.XX scope global lan-br
       valid_lft forever preferred_lft forever
    inet6 fe80::XXXX:XXXX:XXXX:XXXX/64 scope link 
       valid_lft forever preferred_lft forever

# brctl show
bridge name     bridge id               STP enabled     interfaces
lan-br          8000.XXXXXXXXXXXX       no              eth0

У моего моста в настоящее время только одно устройство (eth0), оно существует для подключения виртуальных машин (и ни одно из них в настоящее время не запущено). У вас, конечно, будут и eth0, и eth1.

У вас должна быть возможность иметь snort-монитор br, eth0 или eth1. Трафик идет по всем трем. Быстрый тест с tcpdump -n -i br должен подтвердить это для вас.

2
19.01.2016, 01:52
1 ответ

Зависит от вашей версии bash :

bash-4.2$ echo `echo \`echo "uh!"\``
bash: !"\``: event not found
bash-4.3$ echo `echo \`echo "uh!"\``
uh!

В bash-4.3 , ! " больше не может использоваться в качестве указателя событий истории, поэтому история расширение не применяется.

В остальном это просто обычный синтаксис вложенности обратных кавычек. Внутри обратных кавычек символ обратной косой черты перегружен (снова), чтобы снова выполнить это вложенное расширение.

Вы можете вложить столько уровней, сколько захотите :

echo `echo \`echo \\\`echo \\\\\\\`echo whatever\\\\\\\`\\\`\``

Что является громоздким эквивалентом:

echo $(echo $(echo $(echo $(echo whatever))))

Однако обратите внимание, что в обеих версиях подстановка команд подвержена разделению слов. Поэтому вы должны заключить их в кавычки, чтобы предотвратить это.

С bash , dash , pdksh , yash , zsh , это относительно просто:

echo "`echo "\`echo "\\\`echo "\\\\\\\`echo whatever\\\\\\\`"\\\`"\`"`"

С оболочкой Bourne или Korn , вам также нужно экранировать ", чтобы получилось:

echo "`echo \"\`echo \\\"\\\`echo \\\\\\\"\\\\\\\`echo whatever\\\\\\\`\\\\\\\"\\\`\\\"\`\"`"

Сравните с:

echo "$(echo "$(echo "$(echo "$(echo whatever)")")")" 
6
27.01.2020, 21:51

Теги

Похожие вопросы