Obtenga nombres de dominio a partir de direcciones IP de access.log

Obtenga nombres de dominio a partir de direcciones IP de access.log

En realidad, quiero ver personas desde qué dominio acceden a mi sitio web. Quiero generar los nombres de dominio a partir de direcciones IP en el archivo Apache access.log.

¿Cómo puedo hacer esto? Hay alrededor de 54 archivos de registro. Concateno todos los archivos en uno.

Este es un servidor Unix. Tengo que usar un analizador de archivos de registro de Apache. Entonces uso webalizer pero no resuelve IP en nombres de dominio.

Respuesta1

Escribí un guión sencillo para esto hace mucho tiempo. No es perfecto y tiene algunos modos de falla, pero funciona lo suficientemente bien como para una inspección informal. Nunca me he molestado en mejorarlo, pero quizás alguien más lo haga.

#!/bin/bash

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

Úselo como tal:

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

Respuesta2

Si está utilizando Windows, puede analizar el archivo de registro concatenado con un script y realizar "nslookup" en 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

información relacionada