Зошто `--exclude-dir„ _book “работи, но„ --exclude-dir = {_ book} “не успеа при користење на BSD grep?

Я использую fail2ban. Вы можете отредактировать/etc/fail2ban/filter.d/postfix.conf, чтобы поймать дальнейшие попытки. Я отслеживаю мои файлы/var/log/mail.log, чтобы найти подозрительное поведение и добавить в postfix.conf по мере необходимости. Вот мой postfix.conf, который ловит строку, которую вы упомянули выше.

[INCLUDES]


before = common.conf

[Definition]

_daemon = postfix/smtpd

failregex = ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.7\.1 .*$
        ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo       command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
        ^%(__prefix_line)sNOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$
        ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 454 4\.7\.1 :*$
        reject: RCPT from (.*)\[<HOST>\]: 550 5.1.1
        reject: RCPT from (.*)\[<HOST>\]: 450 4.7.1
        reject: RCPT from (.*)\[<HOST>\]: 554 5.7.1
    reject: RCPT from unknown\[<HOST>\]: 454 4.7.1
    connect from unknown\[<HOST>\]

ignoreregex = 

можно также добавить

warning: non-SMTP command from unknown\[<HOST>\]:: GET / HTTP/1.0

, если вышеуказанное не перехватывает все.

Если требуется запретить исторические IP-адреса вручную, используйте таблицы IP.

С уважением и удачи,

Мэтт

-121--290182-

В Linux вы можете сделать:

htop -p `pstree -p $PID | perl -ne 'push @t, /\((\d+)\)/g; END { print join ",", @t }'`

где $ PID является корневым процессом. Это работает следующим образом:

  1. Список требуемых процессов получают с помощью pstree , используя опцию -p , чтобы перечислить их с их PID.
  2. Выходные данные направляются в сценарий Perl, который извлекает PID, используя регулярное выражение (здесь \( (\d +)\) ), и выводит их, разделенные запятыми.
  3. Этот список приводится в качестве аргумента htop -p .

Для других ОС, таких как Mac OS, может потребоваться адаптация регулярного выражения, которое извлекает PID.

Примечание: К сожалению, невозможно обновить список новыми дочерними элементами, которые будут порождены позже, поскольку после выполнения htop ничего другого сделать нельзя. Это ограничение htop (текущая версия: 2,0,2).

-121--290176-

Я нашел решение:

Я выбрал предпочитаемые обои и скопировал в каталог, предоставленный aliceinwire.

sudo cp your-wallpaper.jpg /usr/share/backgrounds/lightdm.jpg
-1
27.03.2018, 05:39
2 ответа

Этот пост использует расширение скобок bash:

$ printf "%s\n" --exclude-dir={a,b,c}
--exclude-dir=a
--exclude-dir=b
--exclude-dir=c

Однако раскрытие фигурных скобок не применяется, если имеется только один элемент, а фигурные скобки оставлены как -:

$ printf "%s\n" --exclude-dir={a}
--exclude-dir={a}

Поскольку расширение фигурных скобок является функцией bash (и некоторых других оболочек ), но не grep, для grep это выглядит так, как будто вы сказали исключить каталог с именем {_book}.

3
28.01.2020, 05:07

Это не разные «стили команд». Они используют функцию bash , а не функцию grep.

Прочтите об этом, запустив:

LESS='+/Brace Expansion' man bash

Когда у вас есть значения, разделенные запятыми -внутри фигурных скобок, ваша оболочка расширяет их до нескольких аргументов до того, как grepих увидит.

Поскольку вы передаете только один каталог, вам не нужно раскрывать фигурные скобки.

Когда вы используете фигурные скобки только с одним элементом между (без запятых и без двойных точек для обозначения диапазона ), ваша оболочка оставляет фигурные скобки в покое. Вам остается передать grepбуквальное имя {_book}, которое не является каталогом, который вы хотите исключить.


Стоит отметить, что вам также не нужны двойные кавычки.

grep -Fnrl mysql./ --exclude-dir _book

...будет работать нормально.

Двойные кавычки ничего не портят, но и не нужны. Вы можете использовать их для всех аргументов с тем же результатом, поскольку кавычки удаляются оболочкой до того, как grepих увидит.

grep '-Fnrl' "mysql" './' "--exclude-dir" \_\b\o\o\k

Вы даже можете заключить в кавычки 'grep'само название команды, хотя оно имеет немного другое значение. В частности, он подавляет поиск псевдонимов. Например, в системах Ubuntu grepобычно имеет псевдоним grep --color=auto. Цитирование"grep"(или любой его части )игнорирует этот псевдоним.

gr\ep -Fnrl mysql./ --exclude-dir _book

Мораль этой истории такова: поймите правила цитирования для языка, на котором вы пишете.

Или вы можете «делать» ошибки с запутанными результатами.

2
28.01.2020, 05:07

Теги

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