Obtenha nomes de domínio de endereços IP em access.log

Obtenha nomes de domínio de endereços IP em access.log

Na verdade, quero ver pessoas de qual domínio acessam meu site. Quero gerar os nomes de domínio a partir de endereços IP no arquivo access.log do Apache.

Como posso fazer isso? Existem cerca de 54 arquivos de log. Eu concateno todos os arquivos em um.

Este é um servidor Unix. Eu tenho que usar um analisador de arquivos de log do Apache. Então eu uso o webalizer, mas ele não resolve IP para nomes de domínio.

Responder1

Eu escrevi um script simples para isso há muito tempo. Não é nada perfeito e tem alguns modos de falha, mas funciona bem o suficiente para uma inspeção casual. Nunca me preocupei em melhorá-lo, mas talvez alguém o faça.

#!/bin/bash

while read junk
do
        echo -n "$junk "
        dig +short -x $junk
done

Use-o como tal:

cut -f 1 -d ' ' access.log | sort | uniq | ips.sh

Responder2

Se estiver usando Windows, você pode analisar o arquivo de log concatenado com um script, executando "nslookup" em cada IP.

if wscript.arguments.count > 0
then
  logname = wscript.arguments(0)
  set fs = wscript.createobject("scripting.filesystemobject")
  set readstream = fs.opentextfile(logname, 1, 0, 0)
  while not readstream.atendofstream str = readstream.readline ' parse str with RegEx object to get IP
    set shell = wscript.createobject("wscript.shell")
    shell.run "nslookup " & ip & " > temp.txt", 0
    set lookupstream = fs.opentextfile("temp.txt", 1, 0, 0)
    lookup = lookupstream.readall ' parse lookup info
    lookupstream.close
  wend
  readstream.close

informação relacionada