我有发出最多请求的前 10 个 IP 以及从 Apache 日志文件发出的请求数量。我使用这个命令来处理请求:
cat access_log|cut -d' ' -f1|uniq -c|sort -r|head -n 10
我需要做同样的事情,但还要找到这些 IP 地址的所有者。
答案1
您可以扩展命令以根据whois
信息查找 IP 地址:
cat access_log|cut -d' ' -f1|uniq -c|sort -r|head -n 10|while read COUNT IP; do whois $IP; done;
答案2
要查找 IP 地址的所有者,您可以使用 whois 和 geoiplookup 命令。 Whois 为您提供组织信息,geoiplookup 将任何 IP 地址转换为国家/地区和大致地理位置。
此类命令用作:
$geoiplookup 183.53.45.4
GeoIP Country Edition: CN, China
GeoIP City Edition, Rev 1: CN, N/A, N/A, N/A, N/A, 35.000000, 105.000000, 0, 0
$whois 183.53.45.4
% [whois.apnic.net]
% Whois data copyright terms
http://www.apnic.net/db/dbcopyright.html
% Information related to '183.0.0.0 - 183.63.255.255'
inetnum: 183.0.0.0 - 183.63.255.255
netname: CHINANET-GD
descr: CHINANET Guangdong province network
descr: Data Communication Division
descr: China Telecom
country: CN
我通常发现,了解请求最多的国家/地区和仅在调查特定问题时了解实际组织更为有用。
我会将你的命令更改为:
for i in `cat access_log|cut -d' ' -f1|uniq -c|sort -r|head -n 10`
do
geoiplookup $i | head -1 | awk ' { print $4 } '
done
要在 Debian 中安装所需的命令,请执行以下操作:
sudo apt-get install geoip-bin whois