实现异常IP登录服务器通过微信报警

zabbix客户端
脚本内容
vim /usr/local/zabbix/scripts/login.py
# -*- coding:utf-8 -*-
#1.获取服务器上登录的IP
#2.删除收集到的白名单IP
#3.如果获取到的IP为空,则将白名单IP写入收集里面
 
import os
import sys
 
#获取ip
ip=os.popen("who -u | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' |sort -t'.' -k1,1nr -k2,2nr -k3,3nr -k4,4nr |uniq").read().split("\n")
 
#判断是否要删除ip
newip=ip
Whitelist=[]
for num in range(1,len(sys.argv)):
newip=' '.join(newip).replace(sys.argv[num], "").split()
Whitelist.append(sys.argv[num])
 
#判断newip是否为空,为空代表服务器没有被非其他ip登录,则显示当前正常ip登录的账号
#避免误报,如果newip为空就将传入的参数写入newip里面
nulll=0
if len(newip) == 0:
newip=Whitelist
nulll=1
 
#获取登录信息
data=[]
if nulll == 0:
for i in newip:
if i != '':
#执行获取信息的命令,分割后添加到数组
datatmp=os.popen("who -u | grep '%s' "%i).read().split('\n')
for ii in os.popen("who -u | grep '%s' "%i).read().split('\n'):
if ii != '':
data.append(ii.replace('\n',""))
else:
data.append(os.popen("who -u ").read())
#监控的信息
print "%s\n"%' '.join(newip)
#显示登录信息
print '\n'.join(data)
chown zabbix.zabbix /usr/local/zabbix/scripts/login.py
chmod +x /usr/local/zabbix/scripts/login.py
vim /usr/local/zabbix/etc/zabbix_agentd.conf
增加一行
UserParameter=ssh[*],python /usr/local/zabbix/scripts/login.py $1
/etc/init.d/zabbix_agentd restart
zabbix增加监控项

 

 增加触发器

 

 增加报警的动作

 

 测试

 

 微信报警

 

 

posted @ 2021-01-12 15:50  霸都运维  阅读(349)  评论(0编辑  收藏  举报