为了检查有多少 IP 连接到我的服务器,我使用如下命令。
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
在第二列中显示唯一的 IP 以及该 IP 请求 Nginx 的次数,例如:
23 123.45.6.8
3 34.56.78.4
1 8.9.4.3
我想要第三个专栏来介绍这个 IP 的本地化。为此,我使用geoiplookup
.
输出示例:
23 123.45.6.8 Netherlands
3 34.56.78.4 England
1 8.9.4.3 Netherlands
输出示例geoiplookup
:
GeoIP Country Edition: US, United States
#or
GeoIP Country Edition: FR, France
所以用“,”分割就足够了。
如何转换先前的输出以便在第三列上进行本地化一线 ?
答案1
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | awk '{"geoiplookup "$2" | egrep -o Country.*[A-Z]{2}" | getline line; split(line,a," "); print $1, a[3], $2}'