![从 access.log 中的 IP 地址获取域名](https://linux22.com/image/617453/%E4%BB%8E%20access.log%20%E4%B8%AD%E7%9A%84%20IP%20%E5%9C%B0%E5%9D%80%E8%8E%B7%E5%8F%96%E5%9F%9F%E5%90%8D.png)
实际上,我想查看哪些域的人访问了我的网站。我想根据 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