使用字符串模板,发送创建用户信息
目标:
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.打开邮箱,查看是否收到邮件以及邮件内容。