我想看看有哪些国家想要访问我的VPS。我安装了一个名为"goiplookup“的工具,它是从另一项名为"geoiplookup”的工作中获得的。如果我在命令行输入此命令:
goiplookup 8.8.8.8它返回以下内容:
美国,美国
因此,我想出了如何通过以下方法获取试图访问我的服务器的IP列表:
sudo grep "disconnect" /var/log/auth.log | grep -v COMMAND | awk '{print $9}'它给出了一长串这样的IP:
1.1.1.1
2.2.2.2
3.3.3.3我不知道如何让这个IP列表被"goiplookup“工具处理。我试过这个:
sudo grep "disconnect" /var/log/auth.log | grep -v COMMAND | awk '{print $9}' | goiplookup但这不起作用。我也不走运地试了一下:
sudo grep "disconnect" /var/log/auth.log | grep -v COMMAND | awk '{print $9}' | xargs -0 goiplookup发布于 2022-03-02 01:40:30
试试这个:
sudo grep "disconnect" /var/log/auth.log | grep -v COMMAND | awk '{print $9}' | sort | uniq | xargs -n 1 goiplookup| sort | uniq,以确保每个IP只出现一次、
xargs -n 1,这样每个找到的IP都是由| sort | uniq处理的。发布于 2022-03-02 01:56:48
我会把它放到一个文件中,并创建一个小的实用程序来解析它:
sudo grep "disconnect" /var/log/auth.log | grep -v COMMAND | awk '{print $9}' | sort -u > ./file.txt
cat ./file.txt | while read -r line; do
temp$(echo $line)
goiplookup $temp
done这将一次读取文件一行,并对每个IP执行goiplookup。
发布于 2022-03-02 02:30:25
sudo grep disconnect /var/log/auth.log | awk '!/COMMAND/ && !seen[$0]++ {system("geoiplookup \""$9"\""}geoiplookup每次调用只允许一个IP。!/(^|[^[:alnum:]_])COMMAND($|[^[:alnum:]_])/.
grep -w (匹配完整单词)是否合适,在awk中,您可以使用grep -w做类似的事情。https://stackoverflow.com/questions/71316427
复制相似问题