首页 > 技术文章 > 使用字符串模板,发送创建用户信息

xkops 2016-12-29 18:59 原文

目标:

  1.定义函数,实现根据输入数字,生成相应位数随机密码的功能

  2.定义字符串模板,生成用户和密码信息,前缀username和password不变,只有后面对应的变量变化

  3.定义函数,实现根据输入的用户以及1中产生的随机密码,创建用户并根据2中定义的模板发送用户信息到指定用户dthan@xkops.com

 

1.编写生成随机密码的函数

[xkops@localhost python]$ cat randompass.py

#!/usr/bin/env python
#coding:utf8
'''生成指定位数的随机密码'''

import string,random

#定义密码产生的规则:字母、数字、特殊字符.
all_chs = string.letters + string.digits + '*#@!$'

def gen_pass(num):
    '''实现按照用户输入的数字,产生相应位数的随机密码的功能'''
    pwd = []
    for i in xrange(num):
        ch = random.choice(all_chs)
        pwd.append(ch)
    return ''.join(pwd)

if __name__ == "__main__":
    num = int(raw_input("Please input number: "))
    print gen_pass(num)

 

2.字符串模板的使用

定义字符串内容模板的方式如下

>>> import string
>>> contents = '''username: ${user}
... password: {$passwd}'''
>>> t = string.Template(contents)
>>> t.substitute(user='test', passwd='123456')
'username: test\npassword: {123456}'

 

3.定义创建用户设置密码并发送邮件的函数

[xkops@localhost python]$ cat adduser_mail.py

#!/usr/bin/env python
#coding:utf8

import string,subprocess,randompass,sys

#定义模板内容
contents = '''username: ${user}
password: ${passwd}'''

def adduser(uname,pwd):
    t = string.Template(contents)
    email_content = t.substitute(user=uname, passwd=pwd)
    subprocess.call("useradd '%s'" % uname, shell=True)
    subprocess.call("echo '%s'|passwd --stdin '%s'" %(pwd,uname), shell=True)
    subprocess.call("echo '%s'|mail -s 'User Info' dthan@xkops.com" % email_content,shell=True)


if __name__ == "__main__":
    pwd = randompass.gen_pass(8)
    adduser(sys.argv[1], pwd)

*提示:邮箱换成自己的

4.测试创建用户设置密码,并将用户和密码信息按照字符串模板定义的规则发送给指定用户dthan@xkops.com。

[root@localhost python]# python adduser_mail.py test
更改用户 test 的密码 。
passwd:所有的身份验证令牌已经成功更新。

 

5.打开邮箱,查看是否收到邮件以及邮件内容。

推荐阅读