
Estou tentando escrever um script usado em uma caixa de buffer que faz a captura completa de pacotes do tráfego de rede. Como se trata de uma rede bastante grande, dividimos as capturas em segmentos de 100 MB. Em momentos de alto tráfego de rede, muitas vezes durante um período de um minuto, teremos vários pcaps que cobrem esse período.
Então, o que eu quero fazer é ter um script bash que permita ao analista que está procurando algo especificar uma data e hora e quantos minutos de cada lado ele deseja procurar por arquivos. Obviamente posso fazer algo assim -
ls -al | grep "Dec 1" | grep 02:00
ls -al | grep "Dec 1" | grep 02:01
e assim por diante, obtenha cada resultado e faça o grep de cada arquivo individualmente para a palavra-chave específica que estou procurando, mas gostaria de poder fazer uma pesquisa mais ampla para todos os arquivos criados dentro de um intervalo de tempo e, em seguida, usar o grep para cada um deles. a palavra-chave.
Não tenho muita certeza de como fazer isso, qualquer ajuda seria apreciada.
Responder1
Algumas das coisas boas find
(no GNU/Linux) podem fazer por você:
Unidades:
n
exatamentenaté-n
menor quenunidades+n
mais do quenunidades -
O que aconteceu:
-atime
: última vezacessado-ctime
: alterações emarquivo em si(permissões, proprietários, …), não o seu conteúdo-mtime
:conteúdo do arquivomudado-amin n
:nminutos de idade-atime n
:ndias (24 horas) atrás- o mesmo vale para
ctime/min
emtime/min
)
Por isso:
find -atime -30
→ último acesso há menos de 30 diasfind -ctime +5
→ há mais de 5 dias, alterações no próprio arquivofind -mtime +2 -31
→ o conteúdo do arquivo foi alterado há mais de dois dias, mas há menos de 31 dias
também - -daystart
: depois de hoje, 0h00
Grepping
find
coisa -exec grep {} \;
→; a última parte ( {} \;
) é essencial - lembre-se do único espaço em branco entre {}
e\;
As -exec
opções permitem incorporar outros comandos emfind
Responder2
find -iname "" -mtime -7 -exec zgrep "" {} \;
Por ex-
find /opt/WebSphere/AppServer/profiles/application/logs/ -iname "SystemOut*" -mtime -7 -exec zgrep "FileNotFoundException" {} \;
Ele encontrará no diretório /opt/WebSphere/AppServer/profiles/application/logs/ arquivos começando com SystemOut nos últimos 7 dias e procurará por String FileNotFoundException.