实现异常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增加监控项
增加触发器
增加报警的动作
测试
微信报警
本文来自博客园,作者:霸都运维,转载请注明原文链接:https://www.cnblogs.com/wangjie20200529/p/14267358.html