添加ldap用户并发邮件

 

添加“一账通”用户脚本

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

import os
import sys
import MySQLdb
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

lastname = sys.argv[1]
fristname = sys.argv[2]
group = sys.argv[3]

my_sender = 'bigdata_notice@mobanker.com'  # 发件人邮箱账号
my_pass = '***'  # 发件人邮箱密码
my_user = lastname+fristname+'@mobanker.com'  # 收件人邮箱账号
#my_user = 'yangze1@mobanker.com'
print my_user

def adduser(lastname, fristname, group):
    userinfo = getuser(lastname, fristname, group)
    print userinfo
    os.system("useradd -M  %s" % userinfo[0])
    os.system("usermod -a -G %s %s" % (userinfo[1],userinfo[0]))
    os.system("ssh nn2 'useradd -M  %s'" % userinfo[0])
    os.system("ssh nn2 'usermod -a -G %s %s'" % (userinfo[1],userinfo[0]))
    os.system("ssh dn1 'useradd -M  %s'" % userinfo[0])
    os.system("ssh dn1 'usermod -a -G %s %s'" % (userinfo[1],userinfo[0]))
    os.system("echo '%s,%s'  >> /etc/hive/hive.server2.users.conf" % (userinfo[0],userinfo[2]))
    os.system("sort /etc/hive/hive.server2.users.conf |uniq > /tmp/hive.server2.users.conf")
    os.system("\cp /tmp/hive.server2.users.conf /etc/hive/hive.server2.users.conf")
    os.system("scp /etc/hive/hive.server2.users.conf nn2:/etc/hive/")
    #生产ldap格式文件
    os.system("cat /etc/passwd | grep %s > /tmp/user_%s " % (userinfo[0], userinfo[0]))
    os.system("cat /etc/group | grep %s > /tmp/group_%s " % (userinfo[1], userinfo[1]))
    os.system("/usr/share/migrationtools/migrate_passwd.pl /tmp/user_%s > /tmp/user_%s.ldif" % (userinfo[0], userinfo[0]))
    os.system("/usr/share/migrationtools/migrate_group.pl /tmp/group_%s > /tmp/group_%s.ldif" % (userinfo[1], userinfo[1]))
    #ldap中添加账号 先删后加
    os.system("ldapdelete -x -H ldap://10.15.152.239 -D 'cn=Manager,dc=qlbigdata,dc=com' -w *** -r 'uid=%s,ou=People,dc=qlbigdata,dc=com' " % (userinfo[0]))
    os.system("ldapadd -x -H ldap://10.15.152.239 -D 'cn=Manager,dc=qlbigdata,dc=com' -w *** -f /tmp/user_%s.ldif " % (userinfo[0]))
    # ldap中添加组 先删后加
    os.system("ldapdelete -x -H ldap://10.15.152.239 -D 'cn=Manager,dc=qlbigdata,dc=com' -w *** -r 'cn=%s,ou=Group,dc=qlbigdata,dc=com' " % ( userinfo[1]))
    os.system("ldapadd -x -H ldap://10.15.152.239 -D 'cn=Manager,dc=qlbigdata,dc=com' -w *** -f /tmp/group_%s.ldif " % ( userinfo[1]))
    #添加密码
    os.system("ldappasswd -x -H ldap://10.15.152.239 -D 'cn=Manager,dc=qlbigdata,dc=com' -w *** 'uid=%s,ou=People,dc=qlbigdata,dc=com' -s %s " % (userinfo[0], userinfo[3]))

    ret = mail(userinfo)
    if ret:
        print("邮件发送成功")
    else:
        print("邮件发送失败")

def getuser(lastname,fristname,group):
    u=[]
    # 打开数据库连接
    db = MySQLdb.connect("10.30.18.101", "yangze", "***", "manage", 3306)

    # 使用cursor()方法获取操作游标
    cursor = db.cursor()

    # 新建用户,已存在反回用户信息
    sql = " CALL manage.proc_add_hive_user('%s','%s','%s','')" % (lastname,fristname,group)
    try:
        # 执行sql语句
        aa=cursor.execute(sql)

        info = cursor.fetchmany(aa)
        #print info
        for ii in info:
            #print ii[1],ii[4],ii[9]
            u.append(ii[1])
            u.append(ii[4])
            u.append(ii[9])
            u.append(ii[8])
        cursor.close()
        # 提交到数据库执行
        db.commit()
    except:
        # Rollback in case there is any error
        db.rollback()

    # 关闭数据库连接
    db.close()
    return u

def mail(userinfo):
    ret = True
    try:
        msg = MIMEText(' 账号:'+ userinfo[0]+' 密码:'+ userinfo[3] +'  请在堡垒机http://bigdata-hue.wgq.corp/访问   域名不能使用的 请用IP: http://10.30.18.10:8888/ 访问   hive2地址 : 10.40.10.220:10000  ', 'plain', 'utf-8')
        msg['From'] = formataddr(["FromRunoob", my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
        msg['To'] = formataddr(["FK", my_user])  # 括号里的对应收件人邮箱昵称、收件人邮箱账号
        msg['Subject'] = "大数据新开的账号和密码"  # 邮件的主题,也可以说是标题

        server = smtplib.SMTP_SSL("mail.gw.ql.corp", 465)  # 发件人邮箱中的SMTP服务器,端口是25
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
        server.sendmail(my_sender, [my_user,'yangze1@mobanker.com'], msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()  # 关闭连接
    except Exception:  # 如果 try 中的语句没有执行,则会执行下面的 ret=False
        ret = False
    return ret

if __name__ == "__main__":
    adduser(lastname,fristname,group)

您可以选择一种方式赞助本站