分析dhcp.lease文件,统计DHCP服务器IP自动分配
#!/usr/bin/env python
# coding=utf-8
import string
import time,datetime
class TIMEFORMAT:
def __init__(self, time_string="1970-1-1 00:00:00"):
self.time_string = self._format_time_string(time_string)
def _format_time_string(self, time_string):
return time.strftime("%Y-%m-%d %H:%M:%S", self.get_struct(time_string))
@property
def time_struct(self):
return self.get_struct(self.time_string)
def get_struct(self, time_string):
return time.localtime(self.get_seconds(time_string))
@property
def seconds(self):
return self.get_seconds(self.time_string)
def get_seconds(self, time_string):
d = datetime.datetime.strptime(time_string, "%Y-%m-%d %H:%M:%S")
return time.mktime(d.timetuple())
def get_string(self, time_sec):
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time_sec))
# 对于中国的时间,是1970-01-01 08:00:00
def check_diff_time(self, t1, t2):
sec1 = int(self.get_seconds(t1))
sec2 = int(self.get_seconds(t2))
if sec1 > sec2:
secdiff = sec1 - sec2
else:
secdiff = sec2 - sec1
d = self.get_struct(self.get_string(secdiff))
day = d.tm_mday
hour = d.tm_hour
if d.tm_hour < 8:
day -= 1
hour = 24 + (d.tm_hour - 8)
else:
hour = d.tm_hour - 8
return {
"year" :d.tm_year - 1970,
"month" :d.tm_mon - 1,
"day" : day - 1,
"hour" : hour,
"min" : d.tm_min,
"sec" : d.tm_sec,
}
#######################################
alist=[]
lease_IP=' '
lease_start=' '
lease_end=' '
istatus=' '
MAC=' '
client_Hostname=' '
# 修改以下路径
f=open('/var/lib/dhcpd/dhcpd.leases')
lines = f.readlines()
f.close()
#########################################
for line in lines:
if line.find('lease') <> -1:
lease_IP = line.split('\n')[0].split(' ')[1]
if line.find('starts') <> -1:
lease_start = line.split('\n')[0].split(' ')[4:6]
if line.find('ends') <> -1:
lease_end = line.split('\n')[0].split(' ')[4:6]
if line.find('binding state active') <> -1:
istatus='active'
if line.find('next binding state') <> -1:
pass
if line.find('hardware ethernet') <> -1:
MAC=line.split('\n')[0].split(' ')[4].split(';')[0]
if line.find('uid') <> -1:
pass
if line.find('client-hostname') <> -1:
if istatus == 'active':
client_Hostname= line.split('\n')[0].split(' ')[3].split('"')[1]
start_time = str(lease_start[0]) +" " + str(lease_start[1]).rstrip(';')
end_time = str(lease_end[0]) + " " + str(lease_end[1]).rstrip(';')
start_time_format = time.strftime("%Y-%m-%d %H:%M:%S",time.strptime(start_time,"%Y/%m/%d %H:%M:%S"))
end_time_format = time.strftime("%Y-%m-%d %H:%M:%S",time.strptime(end_time,"%Y/%m/%d %H:%M:%S"))
t1 = TIMEFORMAT("%s"%(start_time_format))
t2 = TIMEFORMAT("%s"%(end_time_format))
d = t1.check_diff_time(t1.time_string, t2.time_string)
diff = str(d["year"]) + "年" + str(d["month"]) + "月" + str(d["day"]) + "天 " + str(d["hour"])+ "时" + str(d["min"]) + "分" + str(d["sec"]) + "秒"
record = str(lease_IP) +"\t" + start_time + "\t" + end_time + "\t" + diff + "\t" + str( MAC )+ "\t" + str(istatus) + "\t" + str( client_Hostname )
alist.append(record)
lease_IP = ' '
lease_start = ' '
lease_end = ' '
istatus = ' '
MAC = ' '
client_Hostname =' '
else:
pass
print "IP 地址" + "\t\t\t" + "获取时间" + "\t\t\t\t" + "释放时间" + "\t\t\t\t" + " 剩余时间" + "\t\t\t\t" +"MAC地址" + "\t\t\t\t" +"是否激活" + "\t" + "主机名"
for ip in alist:
print ip
执行:python print_ip.py

提取IP和主机名,并排序
./print_ip.py | awk 'NR!=1{print $1,$5}' OFS="\t\t" | sort -u -t. -k3,3n -k4,

分析dhcp.lease文件,统计DHCP服务器IP自动分配的更多相关文章
- 日志文件 统计 网站PV IP
1. 安装rrdtool yum install rrdtool 2. 创建 rrdtool 数据库 rrdtool create /opt/local/rrdtool/jicki.rrd -s 30 ...
- DHCP服务自动分配IP地址原理
转载自:http://blog.csdn.net/lycb_gz/article/details/8499559 DHCP在提供服务时,DHCP客户端是以UDP 68号端口进行数据传输的,而DHCP服 ...
- 阿里云 云解析使用方法/在阿里云ESC服务器解析域名并绑定服务器IP后上传文件通过域名访问步骤教程
第一步:登录阿里云官网,获取服务器ECS的指定公网IP地址. 1.输入阿里云官网账号进入首页,如下图: 2.点击进入"管理控制台",如下图: 3.点击"云服务器ECS&q ...
- DHCP协议格式、DHCP服务搭建、DHCP协商交互过程入门学习
相关学习资料 http://www.rfc-editor.org/rfc/rfc2131.txt http://baike.baidu.com/view/7992.htm?fromtitle=DHCP ...
- [DHCP服务]——一个验证DHCP原理实验(VMware)
大致实验拓扑图 DHCP Server端的配置 1. 安装DHCP # yum -y install dhcp 2. 拷贝配置文件 # /dhcpd.conf.sample /etc/dhcp/dhc ...
- 因客户机IP与服务器IP不在同一网段导致无盘客户机开机卡tftp,提示:PXE-E11: ARP timeout
61的地址需要在上面的地址范围段之内 问题现象] 无盘客户机启动获取DHCP后卡在tftp界面提示:PXE-E11: ARP timeout,如下图: [原因说明] 客户机的IP地址与服务器IP地址不 ...
- 服务器IP配置功能实现小结
1. 服务器网卡配置文件 /etc/sysconfig/network/ifcfg-***(eth0) linux-f1s9:/etc/sysconfig/network # cat ifcfg-et ...
- 如何修改因Informatica 8.6服务器IP而造资料库无法访问的问题
原因分析解决及如何避免(PowerCenter 8.6.1) 前几天同事安装了个PowerCenter8.6.1做测试,出去了几天回来后Administration Console无法登入了.同事用的 ...
- 如何变更站点 AD 域服务器IP地址
在 winserver 2012 单森林单域,多站点环境中,想把某一个站点AD 域服务器IP地址更改,要如何操作,才能保证客户端正常运行,不影响客户端的运行.有些朋友也经常提出类似问题. 想在不影响 ...
随机推荐
- Spring Boot 集成 Swagger,生成接口文档就这么简单!
之前的文章介绍了<推荐一款接口 API 设计神器!>,今天栈长给大家介绍下如何与优秀的 Spring Boot 框架进行集成,简直不能太简单. 你所需具备的基础 告诉你,Spring Bo ...
- Identity Server 4 - Hybrid Flow - Claims
前一篇 Identity Server 4 - Hybrid Flow - MVC客户端身份验证: https://www.cnblogs.com/cgzl/p/9253667.html Claims ...
- expect实现自动交互由浅入深
expect实现自动交互由浅入深 作为运维人员可以通过Shell可以实现简单的控制流功能,如:循环.判断等.但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet ...
- Spring Boot 1.5.x 基础学习示例
一.为啥要学Spring Boot? 今年从原来.Net Team“被”转到了Java Team开始了微服务开发的工作,接触了Spring Boot这个新瓶装旧酒的技术,也初步了解了微服务架构.Spr ...
- SpringBoot + Spring Security 学习笔记(四)记住我功能实现
记住我功能的基本原理 当用户登录发起认证请求时,会通过UsernamePasswordAuthenticationFilter进行用户认证,认证成功之后,SpringSecurity 调用前期配置好的 ...
- Spring Cloud番外篇-001
熔断监控:Hystrix Dashboard Hystrix Dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard可以直观地看到个Hystrix Com ...
- Chrome - JavaScript调试技巧总结(浏览器调试JS)
Chrome 是 Google 出品的一款非常优秀的浏览器,其内置了开发者工具(Windows 系统中按下 F12 即可开启),可以让我们方便地对 JavaScript 代码进行调试. 为方便大家学习 ...
- PostgreSql的Explain命令详解
http://toplchx.iteye.com/blog/2091860 使用EXPLAIN PostgreSQL为每个收到的查询设计一个查询规划.选择正确的匹配查询结构和数据属性的规划对执行效率是 ...
- c# 抽象类,抽象方法使用(abstract)
入行一年多,在这个IT行业,开发技术主要使用的是.NET,而对应使用的高级语言自然就是c#了.从2017年7月入职后,在平时的工作过程中,只记得使用一些方法去完成逻辑功能,而很少去深究一些语法特性,特 ...
- C#,记录--一个方法中,完成对数据增删改操作
实际应用中,一般不会使用delete彻底的删除数据,大多都是逻辑删除 为了不把本文写成小作文,举个小栗子吧 表 A,deletestate为置删除字段,int类型,值为0和1 表中五条数据 查询 se ...