-P
означает, что grep
должен использовать синтаксис регулярных выражений Perl, а в Perl (?<=pattern)
является «нулевой -положительной шириной -за утверждением », другими словами, якорем который должен появиться перед самим матчем. Таким образом, (?<=inet )[^.]+
соответствует непустой -последовательности символов, которые не являются точками ([^.]+
), если они следуют за "inet "
, другими словами, первому байту различных IP-адресов ваших сетевых интерфейсов, потому что ip address show
выводит такие строки, как inet 127.0.0.1/8 scope host lo
.
Это сделано таким образом, потому что опции -o
команды grep
заставляют выводить совпадение, и вы не хотите, чтобы бит "inet "
печатался, даже если он важен для совпадения.
Вопрос в том, что вы можете сделать только с первым байтом ваших различных IP-адресов и почему ip2
имеет то же значение, что и ip1
. Для чего нужен скрипт?
Для ваших конкретных нужд что-то вроде:
# get last two bytes of IP (assume in 192.168.*. network)
last_two=$(ip a show | grep -oP '(?<=inet 192\.168\.)[^/]+')
# Split result in two
IFS=. read net host <<< $last_two
Насколько мне известно, iptables не понимает URL-адреса или домены. Сначала необходимо преобразовать все URL-адреса в IP-адреса. Используйте этот онлайн-инструментhttp://domaintoipconverter.com/index.php
Чтобы извлечь IP-адреса из предыдущих результатов, используйте этот онлайн-инструментhttps://www.ipvoid.com/ip-extractor/
Сохраните ваши IP-адреса в текстовом файле (list.txt
, например ), по одной записи в строке. Ваш файл list.txt
должен выглядеть примерно так:
$ cat list.txt
145.14.145.222
145.14.144.69
192.243.59.20
192.243.59.12
150.242.210.158
150.242.210.187
122.226.186.3
Затем используйте простой bash-скрипт «for loop», чтобы добавить все IP-адреса из файла list.txt
в iptables:
#!/bin/bash
for i in $(cat list.txt);
do
iptables -A OUTPUT -d "$i" -j DROP
done
# Save the rules
service iptables save
iptables позволит вам фильтровать пакеты по их содержимому, но только если они не зашифрованы.
Поскольку вы хотите использовать это как блокировщик рекламы:
Пожалуйста, рассмотрите альтернативу (, например.https://pi-hole.net/).