zabbix ssh登录ip监控,登录ip归属地查询
#!/usr/local/zabbix/scripts/src/bin/python
# -*- coding: UTF-8 -*-
from bs4 import BeautifulSoup as bsp
import cookielib
import requests
import urllib2
import re
import sys
import os
import socket reload(sys)
sys.setdefaultencoding('utf-8')
#白名单,模拟sys.argv接收到的数据,sys.argv[0]为脚本名
#ip_list=["","ip","ip"]
ip_list=sys.argv
del ip_list[0]
#命令
w_data=os.popen("who").read()
w_data_split=w_data.split("\n")
#储存def w和def netstat的ip数据
ip_data_list=[]
#储存异常ip
err_ip_data_list=[]
#储存def w数据
w_White_list_all_data_list=[]
w_all_data_list=[]
w_print_list=[]
#储存def netstat数据
netstat_list=[]
netstat_list_White_t=[]
#储存域名的ip
domail_ip=[] #139IP归属地查询
def ip_select(ip): #获取cookie
#声明一个CookieJar对象实例来保存cookie
cookie = cookielib.CookieJar()
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler=urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
#agent标识
user_agent = {'User-Agent':'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'} url="http://www.ip138.com/ips138.asp?ip="
#ip="42.62.125.168"
req_url="%s%s"%(url,ip)
req=urllib2.Request(url=req_url,headers=user_agent)
content=opener.open(req,timeout = 1) soup=bsp(content,'html.parser')
data=soup.find_all("table")[2].find_all("td") return data[1].get_text(),data[2].get_text() #淘宝IP归属地查询
def tb_ip(ip):
url="http://ip.taobao.com/service/getIpInfo.php?ip=%s"%ip
r = requests.get(url, timeout=1)
data_list=[]
if int(r.json()["code"]) == 0:
for i in r.json()["data"].keys():
if 'id' not in i:
data_list.append(r.json()["data"][i])
return data_list #过滤出IP,并判断是否为白名单IP
def w(w_data_split):
#按行读取who命令
for i in w_data_split:
#储存是否为域名的开关
ip_str=0
#获取IP或域名,都不是则直接储存
if len (i) > 0 and re.search("([a-z,A-Z,0-9]{1,}\.){1,}[a-z,A-Z,0-9]{1,}",i):
hostsname_str=re.search("([a-z,A-Z,0-9]{1,}\.){1,}[a-z,A-Z,0-9]{1,}",i).group()
#储存过滤出来的IP
ip=[]
#判断过滤出来的字符是否包含字母,包含则代表是域名,不包含则为IP
if re.search("([a-zA-Z])",hostsname_str):
#将域名解析为IP
ip=socket.gethostbyname(hostsname_str)
#储存解析出来的IP
domail_ip.append(ip)
#更改状态为1
ip_str=1
else:
#储存IP
ip=re.search("([0-9]{1,}\.){1,}[0-9]{1,}",i).group() #将who行数据继续分割为数组
i_split=i.split()
#判断过滤出来的IP是否在此数组
if ip not in ip_list:
#将非白名单IP记录
ip_data_list.append(ip)
#判断是否为域名
if ip_str == 1:
#为域名则在who行后面加上解析出来的IP
w_print_list.append("%s %s"%(i,ip))
else:
#不为域名就直接储存
w_print_list.append(i)
else:
#删除ip,避免zabbix检查到存在白名单ip而不触发异常
del i_split[-1]
#隐藏IP
w_White_list_all_data_list.append("%s %s"%(' '.join(i_split),"(白名单ip)"))
#储存未隐藏IP的数据
if ip_str == 1:
#为域名则在who行后面加上解析出来的IP
w_all_data_list.append("%s %s"%(i,ip))
else:
#不为域名就直接储存
w_all_data_list.append(i) else:
#这里将数据储存到隐藏和非隐藏
w_White_list_all_data_list.append(i)
w_all_data_list.append(i) w_off=0
if w_off == 0:
w(w_data_split)
if len(list(set(ip_data_list))) <= 0:
print("没有检查到非白名单ip")
print('\n'.join(w_all_data_list))
print("白名单列表\n%s"%(' '.join(ip_list)))
else:
print('\n'.join(w_print_list))
print("%s"%'\n'.join(w_White_list_all_data_list))
#IP归属地查询
for ii in list(set(ip_data_list)):
print(ii)
print("ip138")
try:
ip,select=ip_select(ii)
#ii为脚本过滤出的IP,ip为139返回的查询IP,select为查询到的数据
print("%s\n%s"%(ip,select))
print("")
except:
print("ip138查询失败") print("taobao")
try:
ip_list=tb_ip(ii)
print(" ".join(ip_list))
except:
print("淘宝查询失败")
用法同http://www.cnblogs.com/cainiaoit/p/6565376.html
zabbix ssh登录ip监控,登录ip归属地查询的更多相关文章
- ssh访问控制,多次失败登录即封掉IP,防止暴力破解
ssh访问控制,多次失败登录即封掉IP,防止暴力破解 一.系统:Centos6.3 64位 二.方法:读取/var/log/secure,查找关键字 Failed,例如(注:文中的IP地址特意做了删减 ...
- Linux启动或禁止SSH用户及IP的登录
启动或禁止SSH用户登录 一般情况下,在使用Linux操作系统都不会去机房来操作机器,都是使用一些第三方的工具来操作. 比如使用SSH Secure File Transfer Client工具来传输 ...
- Hadoop SSH+IP、SSH+别名 免密登录配置
1.为什么要进行 SSH 无密码验证配置? Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个Da ...
- Linux启动或禁止SSH用户及IP的登录,只允许密钥验证登录模式
启动或禁止SSH用户登录 一般情况下,在使用Linux操作系统都不会去机房来操作机器,都是使用一些第三方的工具来操作. 比如使用SSH Secure File Transfer Client工具来传输 ...
- Linux启动与禁止SSH用户及IP的登录
以下就针对SSH方面讨论一下.假设有人特别关注Linux环境的安全性,第一就从login方面来进行讨论 1:Linux启动或禁止SSH root用户的登录 2:Linux限制SSH用户 事实上这些东西 ...
- 自动拒绝恶意IP远程登录Linux服务器脚本
当我们已经配置了iptables防火墙,我们允许22端口对外网所有人访问,当然这也是为了方便,我们在任何地方都连接上,没有做VPN,也没有做ssh密钥验证,但是我们的密码设置得非常复杂,大小写.特殊符 ...
- 【Java EE 学习 20】【使用过滤器实现登陆验证、权限认证】【观察者模式和监听器(使用监听器实现统计在线IP、登录IP 、踢人功能)】
一.使用过滤器实现登录验证.权限认证 1.创建5张表 /*使用过滤器实现权限过滤功能*/ /**创建数据库*/ DROP DATABASE day20; CREATE DATABASE day20; ...
- 恶意IP远程登录Linux服务器脚本
#!/bin/sh #auto drop ssh failed IP address #定义变量 SEC_FILE=/var/log/secure #如下为截取secure文件恶意ip 远程登录22端 ...
- 解决Ecshop因为动态ip问题登录后台自动退出
解决Ecshop因为动态ip问题登录后台自动退出 PHP 铁匠 2年前 (2013-07-21) 1130℃ 0评论 修改lib_base.php文件real_ip()函数,添加以下代码即可解 ...
随机推荐
- 笔记-ORM-sqlalchemy
笔记-ORM-sqlalchemy 1. ORM 1.1. ORM框架简介 对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发 ...
- 使用.gitignore忽视项目中的文件/文件夹
在项目开发的过程中,我们经常需要IDE来提高编程效率.然而,不同的IDE会生成各种各样的临时文件.在项目生命周期中,我们往往不需要关注这类文件的变更记录,因而我们是不需要将它们加入到源代码管理器中. ...
- Servlet过滤器---登录权限控制
实现了登录时权限控制:进入首页.登录页以及登录servlet时,不用验证权限:进入其它页面时,须验证是否登录,未登录则跳转到登录页. 一个简单的首页:index.jsp <%@ page lan ...
- 3226: [Sdoi2008]校门外的区间
链接 思路 bug漫天飞... 维护一颗线段树,支持区间赋值,和区间异或.因为会处理到一些方括号还是圆括号的问题,所以对于每一个下标都乘2,假设中间有一个.5即可,都变成了方括号,输出在处理一下. U ...
- Python基础——安装运行
Python是如何运行的? 像绝大多数编程语言一样,要在计算机上能够运行python程序,至少需要安装一个最小的Python包:一个Python解释器和支持的库. 安装Python 安装包下载:htt ...
- 使用 jQuery Mobile 与 HTML5 开发 Web App 系列文章目录
使用 jQuery Mobile 与 HTML5 开发 Web App 系列文章目录 时间:2012年9月20日 分类:JavaScript 标签:HTML5‚ jQuery Mobile‚ Web ...
- unity2D技术学习与整理
目前有关unity2D的教程以及原理几乎都是国外的.我在这方面也是新手,看了一些例子有很多不懂的地方. 这个网站提供的教程很有参考价值 http://brackeys.com/ 还有这个 http:/ ...
- USACO Section2.1 The Castle 解题报告
castle解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...
- 玩转Node.js(三)
玩转Node.js(三) 上一节对于Nodejs的HTTP服务进行了较为详细的解析,而且也学会了将代码进行模块化,模块化以后每个功能都在单独的文件中,有利于代码的维护.接下来,我们要想想如何处理不同的 ...
- 最短路径(Floyd法)
最短路径法: 算法的主要思想是:单独一条边的路径也不一定是最佳路径. 从任意一条单边路径开始.所有两点之间的距离是边的权的和,(如果两点之间没有边相连, 则为无穷大). 对于每一对顶点 u 和 v,看 ...