需要从 Apache 日志中获取访问者的 IP

sta*_*acy 3 logs ip php apache-httpd

我想存储我网站访问者的 IP,我想使用 PHP。我应该使用 cron 还是如何自动存储访问者的 IP?

Eri*_*ouf 5

默认情况下,Apache 已经记录了每个访问者的 IP。您可以通过组合awksort喜欢从该文件中获取唯一访问者列表:

awk '{print $1}' <log_path> | sort -u
Run Code Online (Sandbox Code Playgroud)

/var/log/httpd/access_log在 Red Hat 类型系统和/var/log/apache2/access.logUbuntu 类型上的 apache 日志的路径在哪里。

当然,您不必让它们独一无二,因此sort如果您不想要,可以删除它们。

编辑:

正如@facundo-victor 指出的那样,如果您确实想要唯一访问者,我们可以awk通过跟踪我们所看到的内容并仅在第一次打印它们来完成所有操作并节省额外的过程,如下所示:

awk '{if (!unique[$1]++) {print $1}}' <log_path>
Run Code Online (Sandbox Code Playgroud)

尽管它们将按照它们首次出现在日志文件中的顺序,而不是按 ascii 排序。

此外,这假设日志中的第一个字段是 IP 地址,这是许多较新版本的 Apache 的默认值,但不一定是真的。

  • Eric,没关系,但每个服务器的日志文件格式可能不一样([https://httpd.apache.org/docs/1.3/logs.html](https://httpd.apache.org/ docs/1.3/logs.html))。此外,使用“awk”,您可以像这样打印不同的 IP 地址: awk '{ if (!unique[$1]++) {print $1}}' &lt;log_path&gt; (3认同)