安装依赖

[root@Sunday ~]# yum -y install jq

如果提示没有这个包,就需要安装下release,再安装jq

[root@Sunday ~]# yum -y install epel-release

代码:

[root@Sunday ~]# vim login_info.sh 
#!/bin/bash

#获取登录用户名
login=$(w|grep -v "load average"|grep -v USER|awk '{print $1}')

#获取IP传递参数给API
IP=$(w|grep -v "load average"|grep -v USER|awk '{print $3}')


#循环传参
for ips in $IP ;do
        for user in $login;do
                location=$(curl -s http://ip.taobao.com/service/getIpInfo.php?ip="$ips"|echo $(jq ".data.country,.data.region,.data.city  2>/dev/null|sed 's/\"//g'"))
        done
                echo  登录用户: $user 登录IP: $ips "地理位置:" "$location"
done

使用

[root@Sunday ~]# chmod +x login_info.sh 
[root@Sunday ~]# sh login_info.sh 

效果

我只是一张图啊啊啊啊

搭配ZBX告警

实际上,如果可以搭配ZABBIX一起来用的话,效果会更好,实时监控Linux服务器成功登录信息 (为什么不监控登录失败情况呢:没吊用)

附带白名单的:

#!/bin/bash

#获取登录信息
login=$(w|grep -v "load average"|grep -v USER|awk '{print $1}' 2>/dev/null)

#获取IP传递参数给位置
IP=$(w|grep -v "load average"|grep -v USER|awk '{print $3}' 2>/dev/null)

#IP白名单
open_IPS=/tmp/open_IPS.txt

#循环传参
for ips in $IP ;do
        for user in $login;do
                location=$(curl -s http://ip.taobao.com/service/getIpInfo.php?ip="$ips"|echo -e $(jq ".data.country,.data.region,.data.city"  2>/dev/null|sed 's/\"//g'))
        done

#IP白名单模块
                if [[ ! -f $open_IPS ]];then touch $open_IPS;fi

                #写入IP
                echo $ips >> $open_IPS
                open_ips=$(sort $open_IPS|uniq -c |awk '{if($1 < 5){print $2}}')
                if [[ $open_ips == $ips ]];then
                        echo  登录用户: $user '('$ips')' 
                        echo  "地理位置:" "$location"
                fi
done
Last modification:January 1st, 2020 at 12:02 am