分析服务器非法登陆日志之Linux下查询IP归属地

看服务器日志太过晦涩,看了ip也找不到源头,苦于Linux下没有查归属地的工具。于是着手写一个分析日志的脚本,本想着用python去做,见138网的表单在URL里,shell-script去请求查询就可以了。有了脚本,一千多个IP攻击源头,5分钟不到就查出来了.

ps:由于网页的HTML编码是gb2312,所以需要把系统字符集字体暂时改为gb2312

效果如下:
分析服务器非法登陆日志之Linux下查询IP归属地_第1张图片


代码实现shell脚本如下:

#!/bin/bash
#

FILE=./ip_result.`date +%Y-%m-%d`
declare -i COUNT=0
declare -i HIT=0
echo > $FILE
echo "Shell-Script begin..."
for I in `lastb | egrep -o '(\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'   | sort -n`;do
if [ $COUNT -eq 0 ];then   
    str1=$I
    let COUNT++
    let HIT++
else
    str2=$I
    if [ "$str1" == "$str2" ];then
        str1=$str2
        let HIT++
    else
        let HIT++
        let COUNT++
        IP=`curl -s http://www.ip138.com/ips138.asp?ip=$str1 | egrep -o "
  • .*?
  • "
    |sed 's@@,@g'|cut -d, -f1 |cut -d':' -f2` echo "$str1 尝试登陆服务器次数: $HIT IP归属地:$IP " >> $FILE HIT=0 str1=$str2 fi fi done sort -rn -t' ' -k3 $FILE --output=$FILE echo "总攻击IP源头数目 :$COUNT" >> $FILE echo "Execute finished."

    你可能感兴趣的:(Linux-系统运维)