Часть II • Защитные операции с использованием bash
Можно.также.использовать.регулярные.выражения..В.этом.примере.будут.ото-
бражаться.только.записи,.возвращающие.код.состояния.HTTP.404.«Страница.
не.найдена»;.параметр.
-i
.добавляется.для.игнорирования.регистра.символов:
tail -f /var/logs/apache2/access.log | egrep -i 'HTTP/.*" 404'
Для.очистки.от.посторонней.информации.вывод.следует.передать.команде.
cut
..
В.этом.примере.выполняется.мониторинг.журнала.доступа.для.запросов,.при-
водящих.к.коду.состояния.404,.а.затем.используется.метод.
cut
.для.отображения.
только.даты/времени.и.запрашиваемой.страницы:
$ tail -f access.log | egrep --line-buffered 'HTTP/.*" 404' | cut -d' ' -f4-7
[29/Jul/2018:13:10:05 -0400] "GET /test
[29/Jul/2018:13:16:17 -0400] "GET /test.txt
[29/Jul/2018:13:17:37 -0400] "GET /favicon.ico
Далее,.чтобы.убрать.квадратные.скобки.и.двойные.кавычки,.вы.можете.направить.
вывод.в.
tr
.
-d
.
'[]"'
.
Обратите.внимание:.здесь.используется.параметр.
--line-buffering
.команды.
egrep
..
Это.вынуждает.
egrep
.выводить.в.stdout.каждый.раз,.когда.происходит.разрыв.стро-
ки..Без.данного.параметра.произойдет.буферизация.и.выходные.данные.не.будут.
переданы.команде.
cut
.до.тех.пор,.пока.буфер.не.будет.заполнен..Мы.не.хотим.так.
долго.ждать..Данный.параметр.позволит.команде.
egrep
.записывать.каждую.строку.
сразу.по.мере.ее.нахождения.
БУФЕРЫ КОМАНДНОЙ СТРОКИ
Что.же.происходит.при.буферизации?.Представьте,.что.
egrep
.находит.много.строк,.
соответствующих.указанному.шаблону..В.этом.случае.у.
egrep
.будет.много.выходных.
данных..Но.вывод.(фактически.любой.ввод.или.вывод).намного.затратнее.(занимает.
больше.времени),.чем.обработка.данных.(поиск.текста)..Таким.образом,.чем.меньше.
вызовов.ввода/вывода,.тем.эффективнее.будет.работа.программы.
При. обнаружении. совпадения. семейство. программ.
grep
. копирует. совпадающую.
строку.в.большую.область.памяти,.называемую.
буфером
,.в.котором.достаточно.места.
для. размещения. большого. количества. строк. текста.. После. поиска. и. копирования.
множества.совпадающих.строк.буфер.заполнится..Затем.
grep
.делает.один.вызов.для.
вывода. всего. буфера.. Представьте. себе. случай,. когда.
grep
. может. поместить. 50. со-
впадающих. строк. в. буфер.. В. этом. случае,. вместо. того. чтобы. сделать. 50. выходных.
вызовов,.по.одному.для.каждой.строки,.необходимо.сделать.только.один.вызов..Это.
в.50.раз.эффективнее!
Это.хорошо.работает.для.большинства.применений.программы.
egrep
,.например,.когда.
мы.проводим.поиск.в.файле.и.просматриваем.его.от.начала.до.конца..Программа.
egrep
Do'stlaringiz bilan baham: |