VBS判断本地账户密码过期邮件提醒

近期公司在外网发布的一个文件服务器(FTP)被受攻击,上面的文件全部被修改无法正常使用,然后最主要的是里面放了一个说明,说如果需要解开文件使用的话,需要给一个账户支付解密费用,但是最终我们还是没有按照提示的付费解开文件的相关操作,找了一些杀毒软件还是没有破解,最终放弃了,通过备份的数据进行还原,该事件主要说明我们在日常中放的公网服务器需要经常更换密码,由于公网的服务器没有加域管理,所以只能通过vbs脚本来获取本地账户然后获取账户的信息,借助本地策略密码最长使用周期为30天来提醒管理员进行定期修改,来提高服务器的安全性,以下为此次操作的脚本信息,供有需要的学习。

本地账户信息属性有的时候会设置密码永不过期了,所以我们也会通过脚本进行判断。使用系统的计划任务来定义执行脚本,来达到最终的脚本执行结果。具体见下:

最终我们通过以下格式进行邮件提醒。

代码开始了:

Dim getd
getd = datediffn
sendmail GetIP,getd
Function datediffn()
Dim ws
dim rt
dim rtarr
Dim lastset
Dim enddate
set ws = createobject("wscript.shell")
rt = ws.exec("net user administrator").StdOut.ReadAll
rtarr = split(rt,vbcrlf)
for i=0 to ubound(rtarr)
If Mid(rtarr(i),1,3)="上次设" then
‘if mid(rtarr(i),1,10)="Password l" Then
lastset = Mid(rtarr(i),InStr(rtarr(i),"20"),Len(rtarr(i)))
‘WScript.Echo lastset
end If
If Mid(rtarr(i),1,3)="密码到" then
‘If mid(rtarr(i),1,10)="Password e" Then
If InStr(rtarr(i),"20") <> 0 then
enddate = Mid(rtarr(i),InStr(rtarr(i),"20"),Len(rtarr(i)))
If DateDiff("d",lastset,enddate) <=66 Then
‘datediffn = 5
datediffn = datediff("d",lastset,enddate)
ElseIf DateDiff("d",lastset,enddate) >=365 then
datediffn = "never"
End If
‘WScript.Echo enddate
Else
datediffn = "never"
End if
end if
Next
End function
Function sendmail(ip,dat)
Dim ns,eo
Dim password
Dim stmp
Dim fromName
Dim Toname
Dim msg1
Dim msg2
Dim msg
Dim users
fromName = "[email protected]"        ‘发件人
Toname = "[email protected]"                ‘收件人
stmp = "smtp.ixmsoft.com"                ‘stmp 服务器地址
users = "gavin"
password = "Password2016"        ‘发件人密码
msg1 = "<html> <body bgcolor=‘wheat‘>" & VbCrLf & _
"<h2><font color = ‘red‘>管理员账户密码过期提醒:</font></h2>" & vbCrLf & _
""& vbCrLf & vbCrLf & _
"<br/><font color=‘blue‘ size = 4>服务器IP地址为:</font><b><font color=‘red‘ size = 6>"&ip&"</font></b><font color=‘blue‘ size = 4>的管理员账户(Administrator)将在</font><b><font color=‘red‘ size = 6>"&dat&"</font></b><font color=‘blue‘ size = 4>天过期,请登录后及时修改;</font>" & vbCRLF & _
""& vbCrLf & vbCrLf & _
"</br>" & _
"<br/><font color=‘green‘ size = 5>账号管理中心</font>" & _
"</body>" & VbCrLf & _
"</html>"
msg2 = "<html> <body bgcolor=‘wheat‘>" & VbCrLf & _
"<h2><font color = ‘red‘>管理员账户密码过期提醒:</font></h2>" & vbCrLf & _
""& vbCrLf & vbCrLf & _
"<br/><b><font size =6 color=‘red‘>Warning:</font></b><font color=‘blue‘ size = 4>服务器IP地址为:</font><b><font color=‘red‘ size = 6>"&ip&"</font></b><font color=‘blue‘ size = 4>的管理员账户(Administrator)属性设置</font><b><font color=‘red‘ size = 6>密码永不过期</font></b><font color=‘blue‘ size = 4>,为了保证账户安全,请登录后取消用户属性选项""密码永不过期"";</font>" & vbCRLF & _
""& vbCrLf & vbCrLf & _
"</br>" & _
"<br/><b><font size=4 color = ‘red‘>Note:</font></b><font color=‘blue‘>本地组策略默认账户密码最长使用周期为42天,同时密码启用复杂度.</font>"& vbCrLf & _
""& vbCrLf & vbCrLf & _
"</br>" & _
"</br>" & _
"</br>" & _
"</br>" & _
"<br/><font color=‘green‘ size = 5>账号管理中心</font>" & _
"</body>" & VbCrLf & _
"</html>"
If dat="never" Then
msg = msg2
Else
msg = msg1
End if
Set eo = CreateObject("CDO.Message")
ns = "http://schemas.microsoft.com/cdo/configuration/"
eo.From = fromName
eo.To =Toname
eo.Subject = "管理员账户密码过期提醒"
eo.Textbody = text
eo.HTMLBody = msg
With eo.Configuration.Fields
.Item(ns&"sendusing") = 2
.Item(ns&"smtpserver") = stmp
.Item(ns&"smtpserverport") = 25
.Item(ns&"smtpauthenticate") = 1
.Item(ns&"sendusername") = users
.Item(ns&"sendpassword") = password
.Update
End With
eo.Send
End Function
‘获取本机IP
‘owner DeViL
‘return 本机的IP地址
Public Function GetIP
ComputerName="."
Dim objWMIService,colItems,objItem,objAddress
Set objWMIService = GetObject("winmgmts:\\" & ComputerName & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objItem in colItems
For Each objAddress in objItem.IPAddress
If objAddress <> "" then
GetIP = objAddress
Exit Function
End If
Next
Next
End Function

我们通过两个条件进行判断,如果用户密码将要在多少天过期的时候会给指定邮件发送提示邮件。

如果用户属性开启了密码永不过期,也会有邮件提醒。

我们通过计划任务进行执行脚本

时间: 2024-10-13 20:29:17

VBS判断本地账户密码过期邮件提醒的相关文章

Windows server 2012 R2 AD域密码过期邮件提醒

最近接领导指示,说要做一个域密码提醒的服务,这样会更人性化些,员工也就不必等过期了来找管理员重置.但是但是本人不懂脚本,就干脆从网上找了些链接做为参考,这里感谢此链接的作者 https://www.yeboyzq.com/windowsserver/632.html 以下是最终的过程 Import-Module Activedirectory $alladuser=get-aduser -searchbase "ou=,ou=,dc=*,dc=com" -Filter 'Passwor

用python+selenium从百度获取本地明日的天气信息并根据温度情况邮件提醒

从百度天气获取当地明天的天气情况,如果明天下雨,请发送邮件通知全体同事带伞, 如果明天气温低于10度,请邮件提醒同事注意保暖,如果气温高于30度则提醒同事注意高温. 假设存在发送邮件的方法self.send_email(email_content) 代码如下: #coding=utf-8 from selenium import webdriver import unittest from time import sleep class WeatherReport(unittest.TestCa

检测AD账户密码过期时间并通知

我记得在坛子里流传这一份用PS1.0版本实现此功能的脚本本来想直接使用,但居然发现不会用呵呵. 后来一想直接写一个得了,此脚本主要实现了两个功能 : 一能判断账户密码的过期时间并通过邮件通知到账户,二是将这些即将过期的账户信息累计通知到管理员. ############################################ #Author:Lixiaosong #Email:[email protected];[email protected] #For:检测AD密码过期时间并邮件通知

Linx监控分享--网络状态监控+邮件提醒

网络状态监控 网络状态:netstat 各个状态的总计,详情:以及重点端口的详细连接情况(22,25,80,3306,8080),打印客户端连接数最多的ip. 邮件报告当前状态. 在手机上安装网易的邮件客户端,就可以达到实时提醒的效果. 关于mail的配置,见之前的文章:http://blog.csdn.net/rookie_ceo/article/details/46559195 #!/bin/sh source /etc/profile IP=`/sbin/ifconfig|sed -n '

使用phpmailer自动邮件提醒

近期的一个小项目中需要用到邮件自动通知功能,搜了搜,发现phpmailer这个东西大家用的挺多的. 首先去sourceforge下载phpmailer,也可去我的网盘下载,我用的是5.1版本的. 看到phpmailer目录下有三个class文件,这便是phpmailer的核心,可以将这些文件拷到你的项目中. 使用起来phpmailer很方便,如下: require("class.phpmailer.php"); $mail = new PHPMailer(); //建立邮件发送类 $m

根据进程名监控进程(邮件提醒)

背景:在window server系统中的进行监控udp端口的时候发现, 每次进程重启后端口都会发生变化,于是尝试放弃监控端口改用监控进程名的想法. bat ::Final interpretation is owned by chenglee ::Thankyou ::温馨提示:如果放在win启动计划中,如需要就开启第六行代码, ::作用是检测完马上自动关闭检测脚本待下次运行, 如果不开启就是检测完停留等待手动关闭, ::作用:窗口叠加 ::@echo off<nul 3>nul @echo

shell脚本-监控及邮件提醒

首先写一个邮件提醒python文件 #!/usr/bin/python # -*- coding: UTF-8 -*- import sys import smtplib import email.mime.multipart import email.mime.text server = 'smtp.163.com' port = '25' def sendmail(server,port,user,pwd,msg): smtp = smtplib.SMTP() smtp.connect(se

c#之Redis队列在邮件提醒中的应用

场景 有这样一个场景,一个邮件提醒的windows服务,获取所有开启邮件提醒的用户,循环获取这些用户的邮件,发送一条服务号消息.但问题来了,用户比较少的情况下,轮询一遍时间还能忍受,如果用户多了,那用户名称排序靠后的人,收到邮件提醒的消息,延迟时间就非常长了. 准备 c#之Redis实践list,hashtable c#之Redis队列 方案 1.生产者线程一获取所有开启邮件提醒的用户. 2.根据配置来决定使用多少个队列,以及每个队列的容量. 3.线程一,获取未满的队列,将当前用户入队.如果所有

Linx监控分享--磁盘空间监控+邮件提醒

分享第一个监控脚本,挂载点磁盘空间使用监控:如果使用空间达到了75%则开始报警,发送告警邮件. 在手机上安装网易的邮件客户端,就可以达到实时提醒的效果. 关于mail的配置,见之前的文章:http://blog.csdn.net/rookie_ceo/article/details/46559195 #!/bin/sh source /etc/profile IP=`/sbin/ifconfig|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/