算是一个实用的例子,定制系统任务,并将随机密码上传至日志服务器,实现定期修改密码;

部分代码:

 1 #!/usr/bin/env python
2 #coding:utf-8
3 import random,string,os,pexpect,time,re
4 def passwd_Create(): #生成随机密码
5 all_choice = string.ascii_letters+string.digits
6 passwd = ''
7 for i in range(8):
8 passwd += random.choice(all_choice)
9 return passwd
10
11 def passwd_Change(name,pwd): #更改密码
12 child = pexpect.spawn('passwd '+name)
13 index = child.expect(['New password',pexpect.EOF,pexpect.TIMEOUT])
14 if index == 0 :
15 child.sendline(pwd)
16 time.sleep(2)
17 child.sendline(pwd)
18 time.sleep(2)
19 child.close(force=True)
20 else:
21 print "expect ERROR"
22 child.close(force=True)
23
24 def log_Note(name,key): #记录日志
25 with open('/var/log/passwd','a+') as log:
26 counts = time.ctime()+" ["+name+"]"+" password is"+" ["+key+"]"+"\n"
27 log.write(counts)
28
29 def checkPw(passwd): #检测密码的强度
30 plen = len(passwd)
31 print plen
32 chpw1 = re.compile(r'.*[A-Z]+.*')
33 chpw2 = re.compile(r'.*[a-z]+.*')
34 chpw3 = re.compile(r'.*\d{1,}.*')
35 chresult1 = chpw1.findall(passwd)
36 print "匹配大写字符: ",chresult1
37 chresult2 = chpw2.findall(passwd)
38 print "小写字符: ",chresult2
39 chresult3 = chpw3.findall(passwd)
40 print "至少一个数字: ",chresult3
41
42 if chresult1 and chresult2 and chresult3:
43 print "You will change passwd use this password"
44 return 0
45 else:
46 print "password is not safety,will generate a safety passwd"
47 return 1
48
49 users = ['root','tom','alice'] #系统用户列表
50
51 if __name__ == "__main__":
52 for i in range(len(users)):
53 a = 1
54 while a != 0 :
55 keys = passwd_Create()
56 a = checkPw(keys)
57 passwd_Change(users[i],keys)
58 log_Note(users[i],keys)

Python实现自动更改系统用户密码,生成随机密码的更多相关文章

  1. linux设置系统用户密码

    目录 一:系统用户密码 1.设置用户密码 一:系统用户密码 1.设置用户密码 1.交互式方法 passwd [用户名] 2.免交互式 echo [设置密码] | passwd --stdin [用户名 ...

  2. [转] 关于linux下通过shell命令(自动)修改用户密码

    关于linux下通过shell命令(自动)修改用户密码 2012-04-23 18:47:39 分类: 原文地址:关于linux下(自动)修改用户密码 作者:ubuntuer 本文章总结了如何手动.自 ...

  3. web更改AD用户密码

    web更改AD用户密码 #web更改AD密码 #网站配置 绑定域名ad.test.cn 功能,更改AD用户密码 #参考http://bbs.51cto.com/thread-1379675-1.htm ...

  4. 重设windows10中的sub linux系统用户密码

    原文:重设windows10中的sub linux系统用户密码 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/haiyoung/article/detai ...

  5. Centos7下关于系统用户密码规则-运维笔记

    针对Centos7下的系统用户的密码规则复杂度的设置,处于安全考虑,说明如下: 一.设置密码规则 1)密码长度.有效期 /etc/login.defs文件是当创建用户时的一些规划,比如创建用户时,是否 ...

  6. SQL Server如何更改系统用户dbo的所属账号

    在SQL Server的每个数据库中都有一个dbo系统用户,dbo是系统默认创建的,无法被删除,如下: dbo在内部其实是绑定了一个SQL Server账号的,可以通过其属性查看Login name, ...

  7. VMware虚拟化NSX-Manager命令行更改admin用户密码

    1.1    登录到NSX-Manager命令行界面,输入用户名和密码登录到用户模式 Log in to the vSphere Client and select an NSX virtual ap ...

  8. changepassword.c 0.9:一个通过WEB界面更改LINUX用户密码的程序

    偶然看到一个用C语言写的CGI程序,可以以WEB界面(无需单独再写HTML)的方式修改用户自己的密码.该程序具有同时修改samba及squid密码的能力. 步骤: 1.下载并解压,并读一下README ...

  9. Centos6下关于系统用户密码规则-运维笔记

    随着linux使用的普遍,对于linux用户以及系统的安全要求越来越高,而用户密码复杂程度是系统安全性高低的首要体现.因此如何对linux下用户的密码进行规则限制,以保证用户必须使用复杂的密码,杜绝用 ...

随机推荐

  1. JAVA实现智能分词(通过文章标题生成tag标签)

    导入jar包 IKAnalyzer2012_u6.jar下载链接:https://pan.xunlew.com/s86789 maven <dependency> <groupId& ...

  2. jQuery Validate表单验证判断是否验证通过

    只判断某个字段是否验证通过,可以参考:https://www.cnblogs.com/pxblog/p/13801171.html <form action="" metho ...

  3. JAVA携带参数(带有请求参数,请求头参数)直接发送POST请求

    <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcl ...

  4. Windows c(++)获取磁盘剩余容量

    头文件 #include <windows.h> #include <wtypes.h> 函数 GetDiskFreeSpaceExA 获取剩余可用空间 /// 得到盘符, 例 ...

  5. 【剑指Offer】矩阵覆盖 解题报告(Python)

    [剑指Offer]矩阵覆盖 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描 ...

  6. Chapter 11 Why Model ?

    目录 11.1 Data cannot speak for themselves 11.2 Parametric estimators of the conditional mean 11.3 Non ...

  7. Python Revisited Day10 (进程与线程)

    目录 10.1 使用多进程模块 10.2 将工作分布到多个线程 <Python 3 程序开发指南>学习笔记 有俩种方法可以对工作载荷进行分布,一种是使用多进程,另一种是使用多线程. 10. ...

  8. pandas tutorial

    目录 Series 利用dict来创建series 利用标量创建series 取 Dataframe 利用dict创建dataframe 选择 添加列 列移除 行的选择, 添加, 移除 Panel B ...

  9. ElasticSearch启动失败:master not discovered or elected yet, an election requires at least X nodes with ids from [XXXXX]

    这个问题困扰过我一段时间,它其实是说未能选举出一个主节点,最后在官网教程中找到答案. 首先是启动(链接): 总结下来就是,如果ES集群是第一次启动,那么需要 cluster.initial_maste ...

  10. 分布式链路追踪自从用了SkyWalking,睡得真香!

    本篇文章介绍链路追踪的另外一种解决方案Skywalking,文章目录如下: 什么是Skywalking? 上一篇文章介绍了分布式链路追踪的一种方式:Spring Cloud Sleuth+ZipKin ...