今有朋友询问如何查询通过tcp访问过自己的所有IP地址。
先是用了 netstat -an 查看了当前所有的TCP连接。后得知服务器是web服务器。
应有apache,nginx等。故查询访问日志应可得到想要的结果。
以apache服务器为例子:
[logmonitor@cnsz17vl2955:/etc/httpd/logs]#ls
access_log dummy-host.example.com-access_log error_log-20170702
access_log-20170702 dummy-host.example.com-access_log-20170101 error_log-20170709
access_log-20170709 dummy-host.example.com-error_log error_log-20170716
access_log-20170716 dummy-host.example.com-error_log-20170101 error_log-20170723
access_log-20170723 error_log
查看访问日志
10.116.216.44 - - [28/Jul/2017:05:17:25 +0800] "GET /favicon.ico HTTP/1.1" 200 - "http://wiki-itsc.sf-express.com/knowledge-base/prd-asura-sms%e7%b3%bb%e7%bb%9f%e9%aa%8c%e8%af%81/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
统计IP数量前10
[logmonitor@cnsz17vl2955:/etc/httpd/logs]#awk '{print $1}' access_log-20170723 | sort | uniq -c | sort -nr | head -10
2980 10.118.48.30
1400 10.118.48.55
611 10.118.125.103
435 10.118.4.72
434 10.118.125.131
414 10.118.48.9
297 10.118.124.46
295 10.118.4.82
265 10.118.4.60
259 10.118.104.185