access.log의 IP 주소에서 도메인 이름 가져오기

access.log의 IP 주소에서 도메인 이름 가져오기

실제로 나는 어떤 도메인에서 내 웹사이트에 액세스하는 사람들을 보고 싶습니다. Apache access.log 파일의 IP 주소에서 도메인 이름을 생성하고 싶습니다.

어떻게 해야 하나요? 약 54개의 로그 파일이 있습니다. 모든 파일을 하나로 연결합니다.

이것은 유닉스 서버입니다. 아파치 로그 파일 분석기를 사용해야 합니다. 그래서 webalizer를 사용하지만 IP를 도메인 이름으로 확인하지 않습니다.

답변1

나는 오랫동안 이에 대한 간단한 스크립트를 작성했습니다. 완벽하지 않고 몇 가지 실패 모드가 있지만 일반적인 검사에는 충분합니다. 나는 그것을 개선하기 위해 노력한 적이 없지만 아마도 다른 사람이 그렇게 할 것입니다.

#!/bin/bash

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

다음과 같이 사용하십시오.

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

답변2

Windows를 사용하는 경우 각 IP에 대해 "nslookup"을 수행하여 스크립트로 연결된 로그 파일을 구문 분석할 수 있습니다.

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

관련 정보