用于在 auth.log 中定位 IP 地址的脚本

用于在 auth.log 中定位 IP 地址的脚本

有没有办法在 Ubuntu Linux 上自动对 IP 地址进行地理定位?我希望通过此方法解决 auth.log 中的错误。

答案1

Ubuntu 先决条件:
sudo apt-get install libgeoip1 libgeo-ip-perl libregexp-common-perl

我专门为你编写的脚本:

#Parses out ip and prints ip followed by country
use strict;
use warnings;

use Regexp::Common qw /net/;
use Geo::IP;

my $gi = Geo::IP->new(GEOIP_STANDARD);

while (<>) {
    #Following matches IPv4 addresses and stores the result in $1
    #The way this is now, it will only do the first IP on each line
    if (/($RE{net}{IPv4})/g) {
        print $1 . ':' . $gi->country_code_by_addr($1);
    }
}

输入输出:

65.19.146.2
65.19.146.2:US
65.19.146.2
220.248.0.0:CN

该脚本只是循环遍历其输入,因此如果脚本名为 foo.pl 并且可执行,则您可以执行类似 的操作cat access.log | foo.pl。如果您想要更准确的细节,请参阅地理::IPperl 模块文档(您可能需要安装不同的数据库)。

答案2

在 Perl 中这应该相当简单。只需获取 auth.log 并使用 grep 或 awk 从中获取 IP 列表,然后将 IP 列表导入 Perl 脚本,然后使用地理::IP从中获取国家/城市匹配。

答案3

命令行

GeoipLookUp(){ curl -A "Mozilla/5.0" -s "http://www.geody.com/geoip.php?ip=$1" | grep "^IP.*$1" | html2text; }

答案4

使用python:

sudo add-apt-repository ppa:maxmind/ppa
sudo apt update
sudo apt install libmaxminddb0 libmaxminddb-dev mmdb-bin
sudo pip install geoip2

wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz
tar xvfz GeoLite2-City.tar.gz

python -c 'import geoip2.database
reader = geoip2.database.Reader("./GeoLite2-City/GeoLite2-City.mmdb")
for line in open("/var/log/nginx/access.log').readlines():
    response = reader.city(line.split(" ")[0])
    print(dir(response))
'

相关内容