首页 >>  正文

windows10密码过期进不去

来源:baiyundou.net   日期:2024-09-22

作者:王忘杰

全民制作人大家好,我是学习python两天半的练习生王忘杰,喜欢路由交换、linux、网络安全,开整!在此之前我并没有编程经验,对于python我花了半天时间看了www.runoob.com/python3的教程,看完第五节基本语法,发现python与bash脚本基本相同,因此安装完PyCharm后直接开始了代码编写。

本文目标,0基础使用python语言完成对windows域用户超过60天未修改密码的进行邮件通知。

一、代码思路
1、获取windows域用户名、上次修改密码时间、邮箱
2、使用python计算修改密码时间是否超过60天
3、超过60天发送邮件通知
4、使用异常处理语句,防止程序崩溃
5、完整编译、定期执行、定期检查

二、获取windows域用户信息
百度查询,获得powershell命令

Get-ADUser -Filter 'Name -like "*"' -Properties *

Get-ADUser是powershell域管理的用户管理命令,此条命令可以列出全部域用户信息

因为我们只需要用户名、上次修改密码时间和邮箱,因此使用powershell管道符加Select-Object筛选出name,passwordlastset,SamAccountName即可

Get-ADUser -Filter 'Name -like "*"' -Properties * | Select-Object name,passwordlastset,SamAccountName

此时的结果为这种格式

1 11

admin         2021/11/30 22:15:20 admin
test         2022/4/20 11:00:23  test    

通过重定向将结果导出到本地,使用python进行后续工作,也可以直接用python执行powershell,看完本文你就懂了。

Get-ADUser -Filter 'Name -like "*"' -Properties * | Select-Object name,passwordlastset,SamAccountName > 1.txt

三、开始计算
1、读取本地1.txt
有困难,先百度,文章里所有代码都是按想法去百度的,使用open()函数打开本地文件

f = open("C:UsersadminDesktop/1.txt", "r", encoding='utf-16')

因为文本有很多行,所以需要使用readlines()函数来按行存储,此函数会以每一行为单位构建一个列表

lines = f.readlines()
print(lines)

此时输出结果为

['1n', 'n', 'admin         2021/11/30 22:15:20 adminn', 'test         2022/4/20 11:00:23  test     n']

我们构建for循环来输出每一行的内容

for line in lines:
   print(line)

输出结果就变成了



admin         2021/11/30 22:15:20 admin

test         2022/4/20 11:00:23  test    

2、分割字符,计算时间
我们使用strptime()函数来进行时间差计算,为此我们需要把每一行进行字符分割,提取有用的信息,而strptime()函数的日期格式是2021-11-30,与AD默认导出的2021/11/30不同,所以需要进行字符替换。

此时我们for循环变成了

for line in lines:
   x = line.replace("/", "-")
   y = x.split()
   time_1 = y[1]
   print(time)

注意,因为文本里有空格,运行会报错,所以我们要做的是进行异常处理。

   time_1 = y[1]
IndexError: list index out of range

使用try进行异常处理,修改for代码为

for line in lines:
   try:
       x = line.replace("/", "-")
       y = x.split()
       time_1 = y[1]
       print(time_1)
   except:
       print("错误行")

运行结果

错误行
错误行
2021-11-30
2022-4-20

for代码解释

for line in lines: #每次for循环将lines中的一行赋予line
   try: #异常处理,正常的执行,错误的跳转except
       x = line.replace("/", "-") #使用replace()函数将line中的/替换为-,将结果赋予x,从[admin         2021/11/30 22:15:20 admin]替换为[admin         2021-11-30 22:15:20 admin]
       y = x.split() #使用split()将x使用空格分割,从[admin         2021-11-30 22:15:20 admin]分割为[admin][2021-11-30][22:15:20][admin]
       time_1 = y[1] #提取第二个字符,注意是0、1、2,所以1就是第二个字符
       print(time_1) #打印2021-11-30,打印仅仅是为了从终端观察运行结果
   except:
       print("错误行") #打印仅仅是为了从终端观察运行结果

获取当前日期,使用time()函数,使用strftime()函数格式化为 年-月-日格式方便计算,此函数import time引用

print(time.strftime("%Y-%m-%d", time.localtime()))

3、计算时间差
使用datetime计算时间差,from datetime import datetime引用,只有datetime格式化后的日期才能减出时间差

for line in lines:
   try:
       x = line.replace("/", "-")
       y = x.split()
       time_1 = y[1]
       time_2 = time.strftime("%Y-%m-%d", time.localtime())
       time_1 = datetime.strptime(time_1, "%Y-%m-%d")
       time_2 = datetime.strptime(time_2, "%Y-%m-%d")
       day = (time_2 - time_1).days #提取日期
       print(day) #打印日期
   except:
       print("错误行")

运行结果

273
132

4、判断是否大于60天
很简单了,一个if搞定

print(day)
       if day > 60: #大于60天
           day = str(day) #上面获取的day是int类型,必须转换成文本,否则无法运行,编辑器会提示错误
           print('密码'+ day +'天未修改') #打印内容
       else:
           print('未过期')

运行结果

密码273天未修改
密码132天未修改

5、丰满内容,拼接出我们真正要的信息
姓名、过期时间、邮箱,从y的第一位取出用户名,最后一位取出邮箱拼接起来

       if day > 60:
           day = str(day)
           username = y[0]
           usermail = (y[3] + '@90apt.com') #拼接邮箱
           print('用户 '+username+' 密码'+ day +'天未修改 邮箱为'+usermail)
       else:
           print('未过期')

运行结果

用户 admin 密码273天未修改 邮箱为[email protected]
用户 test 密码132天未修改 邮箱为[email protected]

四、发送邮件
百度一下,直接加进去,发送邮件所需要的东西我们都有了
用户名就是username,天数day,邮箱我们通过拼接usermail形成完整邮箱了

使用SMTP单独发件测试,其实不需要知道内容,拿来用就行了

from email.header import Header
from email.mime.text import MIMEText

mail_host = "smtp.mxhichina.com"  # 设置服务器
mail_user = "[email protected]"  # 用户名
mail_pass = "passwd"  # 口令

sender = '[email protected]'
receivers = (usermail)  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

message = MIMEText('亲爱的 ' + username + ' 域用户 :n
您的计算机域账户已经超过' + day + '天没有修改密码了', 'plain', 'utf-8')
 message['From'] = Header("域用户密码超期安全提醒", 'utf-8')
 message['To'] = Header(username, 'utf-8')
 subject = '域用户密码超期安全提醒'
 message['Subject'] = Header(subject, 'utf-8')

 try:
   smtpObj = smtplib.SMTP()
   smtpObj.connect(mail_host, 25)  # 25 为 SMTP 端口号
   smtpObj.login(mail_user, mail_pass)
   smtpObj.sendmail(sender, receivers, message.as_string())
   print(username + "邮件发送成功")
 except smtplib.SMTPException:
   print("Error: 无法发送邮件")

运行后列表里的人会收到邮件

五、小优化
邮件别发的太快,容易被封号,在for循环里加个time.sleep(3),运行一次等待3秒

六、完整代码、编译、定时任务
就算了,大家看完上面肯定就会了,随便写写就比我写更规范。编译,那不是百度一下就行,定时任务就更简单了,这里就不说了。

七、最后
不会写代码的网工不是好系统运维

","force_purephv":"0","gnid":"964f38fbca891ef01","img_data":[{"flag":2,"img":[]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1661867920000,"pure":"","rawurl":"http://zm.news.so.com/dd181560a68ae392a1712acfef1dc975","redirect":0,"rptid":"d41b41d5038f5583","s":"t","src":"什么值得买","tag":[{"clk":"ktechnology_1:mac","k":"mac","u":""}],"title":"0基础上手python编程,实践windows域用户过期邮件通知

慕典苏1748win10电脑开机密码忘了怎么办? -
郝月阅13867264747 ______ 1、首先将制作好的U盘启动盘插入电脑并重启,待启动后按F12进入U盘启动界面,选择Windows PE/RamOS(新机型)进入 2、再选择Windows PE 64位,双击进入清除系统密码,点击打开,选择用户名,点击修改密码,输入新密码,点击确...

慕典苏1748如何关闭windows10开机密码 -
郝月阅13867264747 ______ 你好!Windows10系统取消开机密码的方法 步骤:1、我们右键点击开始,在打开的菜单中左键点击:控制面板; 2、在控制面板窗口,我们左键点击:用户帐户和家庭安全项下的更改帐户类型; 3、在管理帐户窗口的选择要更改的用户框中左...

慕典苏1748windows10怎样关闭开机密码 -
郝月阅13867264747 ______ 1.右键点击开始——运行,输入 netplwiz ,确定.将要使用本计算机,用户必须输入用户名和密码”前面的√点掉,确定.2.在弹出的对话框中,输入用户名和密码(二次)确定.就可以自动登录了.

慕典苏1748wins10开机密码忘记了怎么办 -
郝月阅13867264747 ______ 第一种:开机后,按下F8进入”带命令提示符的安全”模式,输入”NET USER+用户名+123456/ADD”可把某用户的密码强行设置为”123456″ 第二种:开机到WINDOS登陆画面时,要开机密码的:你只要买一张GHOST版的光盘(一般电脑城都有买,5-8元一张),设光盘为启动项,开机,会出现一个菜单,在这个菜单中有一个叫WIN用户密码破解(汉化版)的工具(有的也叫系统密码破解),你只要点这个工具,就可以破解了,破解了就可以进入到你的系统中.(有的GHOST版的光盘,这个工具在WINPE中,所以你进入PE就找到了),这一种方法是最实用的,百试百灵.

慕典苏1748win10电脑密码怎么删除密码 -
郝月阅13867264747 ______ WIN10取消开机密码: 1.右键点击开始——运行,输入 netplwiz ,确定.将要使用本计算机,用户必须输入用户名和密码”前面的√点掉,确定. 2.在弹出的对话框中,输入用户名和密码(二次)确定.就可以自动登录了.

慕典苏1748win10系统开机密码怎么取消 -
郝月阅13867264747 ______ WIN10系统关闭登录密码方法:工具:WIN10系统 具体步骤:第一步:先右键Win10系统的开始菜单,选择弹出菜单里的运行.第二步:在运行对话框里输入:netplwiz,然后点击确定.第三步:将用户帐户对话框里的“要使用本计算机,用户必须输入用户名和密码”前面的勾勾去掉,然后点击应用.第四步:点击确定后,弹出自动登录对话框验证权限,输入用户名和密码点击确定,下次开机登录时就不需要密码了.以上就是取消win10开机密码的方法!注:开机密码可以保护电脑文件安全,谨慎.

慕典苏1748windows10怎么去除用户密码 -
郝月阅13867264747 ______ 步骤:1我们右键点击开始,在打开的菜单中左键点击:控制面板;2在控制面板窗口,我们左键点击:用户帐户和家庭安全项下的更改帐户类型;3在管理帐户窗口的选择要更改的用户框中左键点击:...

慕典苏1748windows10电脑密码忘记了怎么办 -
郝月阅13867264747 ______ 可以利用PE系统清除密码,将U盘启动盘插入到pc的usb插口处(若是台式机,建议将u盘插入到pc主机后置的usb插口),开启pc按下相应的快捷键进入装机员的主菜单界面,将光标移至“【09】运行windows登陆密码破解菜单”后按下回车键确认即可;如下图所示: 当大家按下回车键确认后,大家只需要耐心等待片刻即可,无需对屏幕上出现的画面做任何操作,随后便会自动登录windows电脑系统.如下图所示: 当大家看到如下图所示的登录画面时,只需要通过鼠标点击方框内的箭头即可登录电脑系统.

慕典苏1748我电脑是win10系统,开机密码忘记了怎么破? -
郝月阅13867264747 ______ 如果是普通账户密码忘了请用第一种方法. 方法(一) 重新启动电脑,启动到系统登录界面时,同时按住Ctrl+Alt键,然后连击Del键两次,会出现新的登录界面,用户名处输入“Administrator”密码为空,回车即可登录,登录后,打开控制面板...

慕典苏1748windows10忘记密码怎么办 -
郝月阅13867264747 ______ 找个ghost光盘或者系统U盘 启动界面一般有“运行window系统密码破解菜单” 选择进入找到系统所在盘符即可 破解有找到原密码和密码为空

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024