... | @@ -14,4 +14,56 @@ Logo abaixo, temos o comando ``zcat $directory/access.log.2.gz | grep -v 200``. |
... | @@ -14,4 +14,56 @@ Logo abaixo, temos o comando ``zcat $directory/access.log.2.gz | grep -v 200``. |
|
|
|
|
|
Por fim, o script redireciona a saída para um arquivo chamado **geral.txt** que está localizado no diretório do dia atual, logo em seguida executa um script em python cuja entrada será esse mesmo arquivo **geral.txt**
|
|
Por fim, o script redireciona a saída para um arquivo chamado **geral.txt** que está localizado no diretório do dia atual, logo em seguida executa um script em python cuja entrada será esse mesmo arquivo **geral.txt**
|
|
|
|
|
|
**3.** |
|
**3.** No último passo, o arquivo geral.txt é tratado por esse script em python a fim de separar as requisições falhas entre POST, GET, HEAD, outros tipos e Shell code.
|
|
\ No newline at end of file |
|
|
|
|
|
``
|
|
|
|
import re
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
#Essa variável pega a data atual e formata em "dd-mm-YYYY", sendo usada para colocar os arquivos de resultado no dia certo (vide passo 2)
|
|
|
|
dayliDirectory = datetime.today().strftime('%d-%m-%Y')
|
|
|
|
|
|
|
|
#Todas essas variáveis abaixo são apenas para propósito visual, a variável line é uma string com "<===...=>" para separar as linhas nos arquivos resultantes e cGet, cPost, cShell, cOthers e cHead servem para contar as requisições impressas nos documentos em questão
|
|
|
|
line = "<" + 78*"=" + ">"
|
|
|
|
cGet = 0
|
|
|
|
cPost = 0
|
|
|
|
cShell = 0
|
|
|
|
cOthers = 0
|
|
|
|
cHead = 0
|
|
|
|
|
|
|
|
a = input()
|
|
|
|
while(a):
|
|
|
|
#Cada if desses procura por uma palavra em específico na linha contida na variável 'a' e se encontrar, imprime essa linha no documento de destino com alguns ajustes visuais
|
|
|
|
if(re.search("GET", a)):
|
|
|
|
with open("/var/log/nginx/analise/failedRequests/"+str(dayliDirectory)+"/GET.txt", "a") as get:
|
|
|
|
result = str(cGet) + " - " + str(a) + "\n" + line + "\n\n"
|
|
|
|
get.write(result)
|
|
|
|
cGet+=1
|
|
|
|
elif(re.search("POST", a)):
|
|
|
|
with open("/var/log/nginx/analise/failedRequests/"+str(dayliDirectory)+"/POST.txt", "a") as post:
|
|
|
|
result = str(cPost) + " - " + str(a) + "\n" + line + "\n\n"
|
|
|
|
post.write(result)
|
|
|
|
cPost+=1
|
|
|
|
elif(re.search("HEAD", a)):
|
|
|
|
with open("/var/log/nginx/analise/failedRequests/"+str(dayliDirectory)+"/HEAD.txt", "a") as head:
|
|
|
|
result = str(cHead) + " - " + str(a) + "\n" + line + "\n\n"
|
|
|
|
head.write(result)
|
|
|
|
cHead+=1
|
|
|
|
|
|
|
|
#Esse elif procura pela string "x0" porque isso sempre está presente em shell code
|
|
|
|
elif(re.search("x0", a)):
|
|
|
|
with open("/var/log/nginx/analise/failedRequests/"+str(dayliDirectory)+"/SHELL.txt", "a") as shell:
|
|
|
|
result = str(cShell) + " - " + str(a) + "\n" + line + "\n\n"
|
|
|
|
shell.write(result)
|
|
|
|
cShell+=1
|
|
|
|
else:
|
|
|
|
with open("/var/log/nginx/analise/failedRequests/"+str(dayliDirectory)+"/OTHERS.txt", "a") as others:
|
|
|
|
result = str(cOthers) + " - " + str(a) + "\n" + line + "\n\n"
|
|
|
|
others.write(result)
|
|
|
|
cOthers+=1
|
|
|
|
#this line is problematic, the variable 'a' reads the EOF character in the end and generates an error. I couldn't fix this without ignoring the first line of the original file so this error is still happnening. This error doesn't affect the function of this program
|
|
|
|
try:
|
|
|
|
a = input()
|
|
|
|
except:
|
|
|
|
break
|
|
|
|
`` |
|
|
|
\ No newline at end of file |