從 access.log 中從 IP 位址取得網域名稱

從 access.log 中從 IP 位址取得網域名稱

實際上我想看看來自哪個網域的人訪問我的網站。我想從 Apache access.log 檔案中的 IP 位址產生網域名稱。

我怎樣才能做到這一點?大約有 54 個日誌檔。我將所有文件連接成一個。

這是一個 Unix 伺服器。我必須使用 apache 日誌檔案分析器。所以我使用 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

相關內容