如何从 Apache 和 NGINX 服务器的日志文件中提取 IP 地址

如何从 Apache 和 NGINX 服务器的日志文件中提取 IP 地址,第1张

如何从 Apache 和 NGINX 服务器的日志文件中提取 IP 地址

作为系统管理员,您需要密切关注访问您网站的 IP 地址。服务器日志是此类信息的有用来源。它们包含您的服务器收到的每个请求的 IP 地址、日期时间、请求类型、URL、服务器响应等。在本文中,我们将了解如何从 Apache 和 NGINX 服务器的日志文件中提取 IP 地址。

如何从日志文件中提取 IP 地址

Apache 服务器文件的默认位置是

/var/log/http/access_log      [For RedHat based systems]
/var/log/apache2/access.log   [For Debian based systems]
/var/log/http-access.log      [For FreeBSD]

NGINX 日志文件的默认位置是

/var/log/nginx/access_log   [For RedHat based systems]
/var/log/nginx/access.log   [For Debian based systems]
/var/log/http-access.log    [For FreeBSD]

我们将研究不同的用例来提取 IP 地址。在以下每个命令中,将日志文件路径替换为您的服务器的路径。

如何为每个请求获取 IP

您可以通过以下命令轻松使用 awk 命令打印每个请求的 IP 地址。

$ awk '{ print  }' /var/log/http/access_log

日志文件的第一列包含 IP 地址。所以我们告诉 awk 为我们简单地打印第一列。

如何获得唯一 IP

上面的命令将列出每个包含重复值的请求的 IP 地址。您可以将此输出传递给 uniq 命令,以获取访问您网站的唯一 IP 地址列表。

$ awk '{ print  }' /var/log/http/access_log | uniq

如何获取特定的 IP 地址

如果您要在日志文件中查找特定 IP 地址(例如 192.34.45.46),请改用 grep 命令,如图所示。

$ sudo grep "192.34.45.46" /var/log/http/access_log

如何获取最常用的 IP 地址

如果您需要查找访问您网站的前 10 个最频繁的 IP 地址,请使用以下 awk 命令。它基本上将所有 IP 地址的列表传递给 sort & uniq,他们计算每个 IP 的点击量,并按点击量的降序对它们进行排序。

$ sudo awk '{ print }' /var/log/http/access_log | sort | uniq -c | sort -nr | head -n 10

如果您想定期运行这些命令,建议为它创建一个 shell 脚本。使用以下命令创建一个空白 shell 脚本。

$ sudo vi /home/extract_ip.sh

将以下行添加到它。

#!/bin/sh

echo "Unique IP Addresses accessing your site"
sudo awk '{ print  }' /var/log/http/access_log | uniq

echo "10 Most Frequent IP addresses accessing your site"
sudo awk '{ print }' /var/log/http/access_log | sort | uniq -c | sort -nr | head -n 10

保存并关闭文件。

使 Shell 脚本可执行。

$ sudo chmod +x extract_ip.sh

使用以下命令运行 shell 脚本,如下所示。

$ sudo /home/extract_ip.sh

您还可以创建 cronjob 以定期运行上述脚本。使用以下命令打开 crontab。

$ sudo crontab -e

添加以下行以在每天上午 10 点运行上述 shell 脚本并将输出发送到 /home/ip_log.txt

0 10 * * * sudo /home/extract_ip.sh >>/home/log.txt 2>&1

保存并关闭文件。

因此,您只需打开 /home/log.txt 文件即可轻松访问所有这些信息

$ sudo cat /home/log.txt

在本文中,我们学习了几种从 Apache 和 NGINX 服务器的日志文件中提取 IP 地址的方法。我们还将这些命令保存到一个 shell 脚本中,并创建了一个 cronjob 来每天自动运行这个脚本。您可以根据您的要求自定义它们。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5704418.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存