
Я пытаюсь написать скрипт, используемый на буферном блоке, который делает полный захват пакетов сетевого трафика. Поскольку это для довольно большой сети, мы разбиваем захваты на сегменты по 100 МБ. В моменты большого сетевого трафика, часто в течение одной минуты, у нас будет несколько pcap, которые покрывают этот период.
Итак, я хочу сделать скрипт bash, который позволяет аналитику, который ищет что-то, указать дату и время, а также сколько минут в обе стороны от этого они хотят искать файлы. Очевидно, я могу сделать что-то вроде этого -
ls -al | grep "Dec 1" | grep 02:00
ls -al | grep "Dec 1" | grep 02:01
и так далее, получить каждый результат и выполнить grep каждого файла по отдельности на предмет конкретного ключевого слова, которое я ищу, но я хотел бы иметь возможность выполнить более широкий поиск по всем файлам, созданным в течение определенного периода времени, а затем выполнить grep каждого из них на предмет ключевого слова.
Я не совсем понимаю, как это сделать, но буду признателен за любую помощь.
решение1
Вот некоторые замечательные вещи, которые find
(в GNU/Linux) могут вам пригодиться:
Единицы измерения:
n
точнонунтис-n
меньше, чемнединицы+n
больше, чемнединицы -
Что случилось:
-atime
: последний раздоступ-ctime
: изменения насам файл(разрешения, владельцы, …), а не его содержимое-mtime
:содержимое файлаизмененный-amin n
:нминут возраст-atime n
:ндней (24 часа) назад- то же самое касается
ctime/min
иmtime/min
)
Таким образом:
find -atime -30
→ последний доступ менее 30 дней назадfind -ctime +5
→ более 5 дней назад, изменения в самом файлеfind -mtime +2 -31
→ содержимое файла изменилось более двух дней, но менее 31 дня назад
также - -daystart
: после сегодняшнего дня, 0.00ч
Греппинг
find
вещи -exec grep {} \;
→; последняя часть ( {} \;
) имеет важное значение — обратите внимание на один пробел между {}
и\;
Параметры -exec
позволяют включать другие команды вfind
решение2
find -iname "" -mtime -7 -exec zgrep "" {} \;
Например-
find /opt/WebSphere/AppServer/profiles/application/logs/ -iname "SystemOut*" -mtime -7 -exec zgrep "FileNotFoundException" {} \;
Он найдет в каталоге /opt/WebSphere/AppServer/profiles/application/logs/ файлы, начинающиеся с SystemOut за последние 7 дней, и будет искать строку FileNotFoundException.