zoukankan      html  css  js  c++  java
  • 使用字符串模板,发送创建用户信息

    目标:

      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
    password: {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.打开邮箱,查看是否收到邮件以及邮件内容。

  • 相关阅读:
    CSS3新增文本属性
    CSS选择器
    【转】Java基础——面试题汇总
    【转】equals和==的区别
    【转】JRE和JDK的区别
    【转】深度学习常用的模型评估指标
    【转】使用Scanner输入字符串时next()和nextLine()区别
    JAVA操作ORACLE大对象
    ORACLE大对象存储
    iis是什么东西?
  • 原文地址:https://www.cnblogs.com/xkops/p/6234554.html
Copyright © 2011-2022 走看看