Сделайте передачу xargs как первый параметр

IP, который Вы передаете как аргумент tuxcut, отправляется пакет, говоря ему, что MAC-адрес его шлюза является Вашим MAC-адресом. Следовательно, тот IP отправляет все пакеты Вам и если Вы не передаете его фактическому шлюзу, они тихо отбрасываются.

Например, Если существует два ПК в подсети, IP-адреса которой IP_A и IP_B и их MAC-адреса MAC_A и MAC_B.

Предположим что ПК с IP IP_A попытки сократить сеть ПК с IP IP_B.

Как Вы знаете, каждый ПК прежде, чем отправить пакет просит MAC-адрес шлюза, если это не доступно в своем кэше. Таким образом, когда ПК с IP IP_B отправляет Запрос ARP на MAC-адрес его шлюза, он делает это широковещательной передачей уровня MAC: целевой MAC является FF:FF:FF:FF:FF:FF.

IP_A ПК отвечает на это с ответом ARP, который одноадресно передается, как отправляет его MAC (MAC_A) как MAC-адрес шлюза. Так IP_B отправляет все пакеты в IP_A который не передает пакет к фактическому шлюзу.

P.S.: можно проверить это при помощи Wireshark при использовании Tuxcut.

57
20.09.2013, 15:12
2 ответа
$ echo 192.168.1. | xargs -I{} grep {} *.txt

Пример

Файлы примера:

$ cat {1..3}.txt
192.168.1
192.168.1
192.168.1

Пример выполняется:

$ echo 192.168.1. | xargs -I{} grep {} *.txt
1.txt:192.168.1.
2.txt:192.168.1.
3.txt:192.168.1.
89
27.01.2020, 19:33
  • 1
    Спасибо, это работает. Но почему? Что Вы заменяете-I? Я не получаю его. –  e18r 21.12.2016, 18:18
  • 2
    Это кажется фигурными скобками, является заполнителем. Можно заменить {} чем-либо, что Вы любите: эхо 192.168.1. | xargs-I pholder grep pholder *.txt –  denormalizer 19.06.2017, 03:47

Другой подход:

find . -name \*.txt -print0 | xargs -0 grep 192.168.1

Это не переполнит командную строку оболочки слишком большим количеством имён файлов. Чтобы избежать путаницы xargs/grep с именами файлов, которые имеют пробелы, опции -print0 и -0 очерчивают каждое найденное имя нулевым, а не LF.

3
27.01.2020, 19:33

Теги

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