Регулярное выражение для исключения данных в определенном диапазоне

Чтобы устранить фундаментальное заблуждение, dmesg не считывается из /var/log/dmesg . Он считывает непосредственно из кольцевого буфера ядра и выдает последние N сообщений. В конце процесса загрузки вызывается dmesg для записи загрузочных сообщений в /var/log/dmesg (при этом старые версии этого файла вращаются в обычном способе).

После запуска системного журнала ( syslogd , rsyslogd , syslog-ng и т.д.) он считывается из буфера ядра и записывается в файл, например /var/log/kern.log . (Это для Debian; другие системы будут различаться). Предполагая, что ваша система смогла записать на диск и очистить дисковые буферы, прежде чем он потерпел крах, то есть там вы найдете умирающие крики ядра.

В моей системе Debian файл /var/log/kern.log содержит считываемые человеком метки времени.

-121--14360-

Для этого (тщательно) отредактируйте /etc/pam.d/sshd и добавьте в стек модуль pam _ exec . Этот модуль можно использовать для вызова внешней программы, например сценария, когда кто-то успешно запустил сеанс ssh.

Дайте мне знать, если вам нужны инструкции «Как», и я обновлю свой ответ, чтобы включить их для системы на основе Debian. (Другие дистрибутивы имеют несколько отличающиеся стеки PAM, поэтому вам придется интерпретировать мои инструкции, а не следовать им вслепую.)

-121--84635-

Совершенно нормально иметь систему без этого файла. Поэтому его нельзя найти ни на одной системе голых костей. Этот файл копируется из /etc/skel в домашнюю папку нового пользователя при создании пользователя, и он будет находиться в домашней папке из-за этого факта или из-за того, что кто-то поместил его туда вручную.

Причина, по которой вы хотите иметь .bashrc (или .bash _ профиль или оба), заключается в том, что во время входа в систему Bash будет выполнять любые команды (и пользовательские настройки), которые вы хотите.

Имейте в виду, что даже сам Баш необязателен. Хотя некоторая оболочка, совместимая с POSIX, должна существовать, она не должна быть Bash.

0
17.03.2015, 15:33
2 ответа

Несколько вещей:

. - это особый символ, поэтому он должен быть сбежен:

^10\.20\.30\.([0-1][0-9][0-9]|2[00])

2 [00] совпадает 20, а не 200:

^10\.20\.30\.([0-1][0-9][0-9]|200)

Вы должны обрабатывать однозначные и двузначные числа отдельно:

^10\.20\.30\.([0-1][0-9][0-9]|200|[0-9][^0-9]|[0-9][0-9][^0-9])

Это дает правильный результат:

$ grep -vE -f whitetest.txt testIP.txt
10.20.30.201 20
10.20.30.250 20
222.233.201.5 20
10.233.201.5 20
111.233.201.5 20
1
28.01.2020, 02:51

Это должно получить то, что вы хотите, я думаю:

grep -vE '10\.20\.30\.(1|..?,|200)
' <<\IN
10.20.30.150,20
10.20.30.134,20
10.20.30.201,20
10.20.30.5,20
10.20.30.250,20
10.20.30.42,20
222.233.201.5,20
10.233.201.5,20
111.233.201.5,20
IN

в основном вам просто нужно исключить любой матч на 10.20.30 с финальным октомным восьем менее трех символов, что начинается с 1 или это полностью 200.

Вышеуказанные отпечатки:

10.20.30.201,20
10.20.30.250,20
222.233.201.5,20
10.233.201.5,20
111.233.201.5,20
0
28.01.2020, 02:51

Теги

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