на Debian, все методы для начала и остановки сетевых подключений запускаются скрипты в / etc / ettem
. Это задокументировано в странице интерфейсов (5)
. Он является частью пакета ifuppdown, но скрипты выполняются, даже если интерфейс выводится вверх или вниз по каркасам, таким как NetworkManager, а не на IFUP
и IFDown
команды.
Так что поставьте свой скрипт в /etc/network/if-up.d
. Убедитесь, что он включает в себя проверку, который вы нужны интерфейс, - в частности, вы не хотите, чтобы ваш скрипт был выполнен, как только интерфейс петля увеличивается. Вы можете проверить имя интерфейса с переменной средой
, либо непосредственно, либо путем вызывающих команд, таких как IFCONFIG
,
или IP
Чтобы проверить его характеристики (IP-адрес, шлюз, ...). В качестве альтернативы вы можете проверить что-то независимо от интерфейса, например, Проверьте, что какой-то хост достижится.
Обратите внимание, что скрипты выполняются в лексикографическом порядке. Если ваш скрипт требует некоторых других функций (например, DNS), убедитесь, что он наступает позже, чем скрипт, который устанавливает эту функциональность.
проблема состоит в том, что 9/1
будет также соответствовать 9/12
. Так, используйте это:
grep -Fv 'IF 9/1 ' file.txt
кроме того, не используйте x
опция. Это выбирает только те соответствия, которые точно соответствуют целой строке.
причина-x
grep
для соответствия целой строке. Вам нужно:
grep -Fv 'IF 9/1[^[:alnum:]_]' file
Да, вы сказали grep
, но часто awk
решения выглядят менее загадочными и более просты, если булевы условия включены:
awk '!($2=="IF" && $3=="9/1")' file.txt
Вы можете использовать grep
PCRE (Perl-совместимые регулярные выражения):
$ grep -P 'IF 9/1(?! )' file.txt
3 IF 9/12 Larry
4 IF 9/15 Page
(?!)
- шаблон отрицательного просмотра вперед нулевой ширины, который гарантирует отсутствие пробелов после IF 9 / 1
т. Е. За ним следует хотя бы один символ, кроме пробела. Это даст вам желаемый результат.