1、界面配置ldap验证(略)

2、mysql导入ldap帐号信息

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import pymysql
import commands
import base64
import sys
from datetime import datetime

reload(sys)
sys.setdefaultencoding('utf-8')

mysql_host='xxx.internal.xxx.com'
mysql_port=3306
mysql_user='zabbix'
mysql_passwd='zabbix'
mysql_db='zabbix'

def get_user_from_ldap ():
ldap_users=commands.getoutput("ldapsearch -x -LLL -H ldap://xxx.xxx.xxx.xxx-b dc=xx,dc=com givenName|sed '1,12'd|sed '/^$/d'|egrep -v 'ou=Group|ou=machines'").strip().splitlines()
return ldap_users

def get_value():
values = {}
lines = get_user_from_ldap()
for index,line in enumerate(lines):
if line.startswith("dn: cn="):
if (index+1)<len(lines) and lines[index+1].startswith("givenName:"):
strcount = lines[index+1].strip().split()[0].count(':')
if strcount == 2:
sourcename = lines[index+1].strip().split()[1]
name = base64.b64decode(sourcename)
else:
name = lines[index+1].strip().split()[1]
alias = lines[index].strip().split('=')[1].split(',')[0]
values[alias] = name
else:
print "The user [%s] set error on ldap server !" % line
return values

def get_id():
conn = pymysql.connect(host=mysql_host, port=mysql_port, user=mysql_user, passwd=mysql_passwd, db=mysql_db, charset='utf8')
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute("select userid from users order by userid desc limit 1")
id = cur.fetchone().values()[0]
cur.close()
conn.close()
return id

def get_mysql_data():
conn = pymysql.connect(host=mysql_host, port=mysql_port, user=mysql_user, passwd=mysql_passwd, db=mysql_db, charset='utf8')
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute("select userid from users order by userid desc limit 1")
id = cur.fetchone().values()[0]
cur.close()
cur_user = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur_user.execute("select alias from users")
user_data = cur_user.fetchall()
user_name = [name['alias'] for name in user_data]
cur_user.close()
conn.close()
return id,user_name

def insert_data():
conn = pymysql.connect(host=mysql_host, port=mysql_port, user=mysql_user, passwd=mysql_passwd, db=mysql_db, charset='utf8')
cur = conn.cursor()
n, zabbix_user = get_mysql_data()
# del_name = []
data = get_value()
ldap_name = data.keys()
for alias, name in data.items():
search = cur.execute("select * from users where alias = %s", (alias, ))
if not search:
n += 1
sql = "insert into users(userid,name,alias) values ('%s','%s','%s');" % (n,name,alias)
insert = cur.execute(sql)
if insert:
with open ('/opt/ldap.log', 'a') as log:
time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
str = "User %s Name's %s and Userid's %s Add Succeed at %s" % (alias,name,n,time)
log.write(str+'\n')
del_cur = conn.cursor()
for name in zabbix_user:
if name not in ldap_name:
if name.lower() != 'zabbix' or name.lower() != 'guest':
# del_name.append(name)
try:
del_data = del_cur.execute("delete from users where alias = %s", (name,))
if del_data:
with open ('/opt/ldap.log', 'a') as del_log:
del_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
del_str = "User %s del succeed at %s" % (name, del_time)
del_log.write(del_str+'\n')
except (Exception), error_str:
print error_str
print "when del %s failed" % name
# print del_name
conn.commit()
cur.close()
conn.close()

if __name__ == '__main__':
insert_data()

最新文章

  1. Eclipse常用快捷键汇总
  2. Java中的逆变与协变
  3. android编译系统的makefile文件Android.mk写法
  4. 三星s4宣传片配色有惊喜
  5. JAVA对文件类型的校验
  6. (hzau)华中农业大学第四届程序设计大赛网络同步赛 G: Array C
  7. 3.IP转发
  8. JavaSE学习总结第10天_面向对象5
  9. RDIFramework.NET ━ .NET高速信息系统开发框架钜献 V2.9 版本震撼发布
  10. Mybatis基础学习(二)&mdash;开发Dao方式
  11. Abp.NHibernate连接PostgreSQl数据库
  12. 使用hexo搭建个人博客
  13. openresty+lua劫持请求,有点意思
  14. 微信小程序-统一下单、微信支付(Java后台)
  15. 框架、颜色、颜色名、脚本、字符实体、URL、速查列表
  16. 使用Newtonsoft将DataTable转Json
  17. spring之jdbcTemplate
  18. scrapy框架系列 (3) Item Pipline
  19. TZOJ 4435 n皇后问题(回溯)
  20. css清除浮动clearfix:after的用法详解

热门文章

  1. 2019 263云通信java面试笔试题 (含面试题解析)
  2. python基础08--迭代器,生成器
  3. 指定细则 Small
  4. restFull api接口
  5. TensorFlow NMT的数据处理过程
  6. Mac安装vscode IDE 撸nodejs代码
  7. k8s 挂载卷介绍(四)
  8. Django知识点归纳总结之HTTP协议与URL
  9. Android Studio Gradle 配置问题
  10. (十一)Kubernetes StatefulSet控制器