限制用户多点并发登录之二——“脚本”

简介:
在上一篇文章中,我们谈到了使用“登录到”限制用户多点并发登录,同时也看到了使用“登录到”限制用户多点并发登录的缺点。今天我们来探讨另外一个限制用户多点并发登录的方法——脚本,测试环境跟昨天一样,具体操作步骤如下:
1.  首先,我们需要在 DC 服务器上建一个文件夹 login$ ,用于存放用户登录信息,权限设置为 Domain User 可修改。设置该文件夹的目的:记录用户登录和注销信息,如下图:
2.  将下面的脚本复制到记事本,保存为 logon.vbs
Dim oNet, sUser, sComputer, ServerLog
ServerLog = "\\netcn01.guoxuemin.cn\login$\"
Set oNet = CreateObject("Wscript.Network")
sUser = oNet.UserName
sComputer = oNet.ComputerName
Set oNet = Nothing
Dim fso, f1, WshShell, argu, alllog, lastlog
Dim FileName
FileName=ServerLog & sUser & ".txt"
Set fso = CreateObject("Scripting.FileSystemObject")
If Not (fso.FileExists(FileName)) Then
   Set f1 = fso.CreateTextFile(FileName,True)
   f1.WriteLine sUser & "   " & sComputer
   f1.Close
   Set WshShell = Wscript.CreateObject("Wscript.Shell")
   argu = FileName & "/T/E/G" & sUser & ":f /R Everyone"
   WshShell.run("cacls " & argu)
   Set WshShell = Nothing
End If
Set f1 = fso.OpenTextFile(FileName, 1, True)
alllog = f1.readall
f1.Close
Set f1 = fso.OpenTextFile(FileName, 1, True)
lastlog = f1.readline
f1.Close
If Left(lastlog, 5) = "logon"  Then   
If InStr(lastlog,sComputer) < 1 Then   
         Set f1 = fso.OpenTextFile(FileName, 2, True)
         f1.WriteLine (lastlog & Chr(13) & Chr(10) & "FailLogon:" & Now() & " " & sUser & "  at  " & scomputer & Chr(13) & Chr(10) & alllog)
         f1.Close
         Set WshShell = Wscript.CreateObject("Wscript.Shell")
         Dim i,OldComputer
         i=InStr(lastlog,"at")
         OldComputer=Right(lastlog,Len(lastlog)-i-2)
         WshShell.popup " 对不起:此账号已经在  " & OldComputer & "  上登录!如果不是您本人登录的,那么说明您的账户已经被盗用,请联系 IT 部处理,谢谢! ",30
         Set WshShell = Nothing
         Dim os, retcode
         For Each os In GetObject("Winmgmts:{impersonationLevel=impersonate,(shutdown,remoteshutdown)}!//" + sComputer).InstancesOf("Win32_OperatingSystem")
            retcode = os.Win32ShutDown(4, 0)
         Next
         Wscript.quit
        Else
         Set f1 = fso.OpenTextFile(FileName, 2, True)
         f1.WriteLine ("logon:  " & Now() & " " & sUser & "  at " & sComputer & Chr(13) & Chr(10) & alllog)
         f1.Close
        End If
Else  
        Set f1 = fso.OpenTextFile(FileName, 2, True)
        f1.WriteLine ("logon:  " & Now() & " " & sUser & "  at " & sComputer & Chr(13) & Chr(10) & alllog)
        f1.Close
End If
Set f1 = Nothing
Set fso = Nothing
Wscript.quit
3.  将下面的脚本复制到记事本,保存为 logoff.vbs
dim oNet,sUser,sComputer,ServerLog
ServerLog = "\\netcn001.guoxuemin.cn\login$\"
set oNet=createobject("Wscript.Network")
sUser=oNet.UserName
sComputer=oNet.ComputerName
set oNet=nothing
dim fso,f1,alllog,lastlog
Dim FileName
FileName=ServerLog & sUser & ".txt"
set fso=createobject("Scripting.filesystemobject")
set f1=fso.opentextfile(FileName,1,true)
lastlog=f1.readline
f1.close
set f1=fso.opentextfile(FileName,1,true)
alllog=f1.readall
f1.close
if left(lastlog,5)="logon" Then
If InStr(lastlog,sComputer) > 0 Then  
  Set f1=fso.opentextfile(FileName,2,true)
  f1.writeline("logoff: " & Now() & " " & suser & "  at " & scomputer & Chr(13) & chr(10) & alllog)
  f1.close
End If
end if
set f1=nothing
set fso=nothing
wscript.quit
4.  在需要限制的 OU 上建立组策略,这里我们以 IT 部为例,在 IT OU 上点右键,选属性。新建一个组策略,然后点 Edit ,如下图:
5.  在“ Group Policy Object Editor ”对话框中,选择“ User Configuration—Windows Settings—Scripts(Logon/Logoff) ”,双击右面板上的 Logon ,将 logon.vbs 脚本加载进去;双击右面板上的 Logoff ,将 logoff.vbs 脚本加载进去。如下面图:
6.  现在都设置好了,我们来测试一下,使用 Tony.guo 登录 netcnxp 这个客户端,然后再登录 client 这个客户端,系统会弹出一个报警对话框,如下图:这说明我们的脚本起作用了。
7.  接下来我们再来看看前面设置的登录 / 注销记录信息,打开: \\netcn01.guoxuemin.cn\login$ ,可以看到已经登录的用户记录,如下图:
 
我们打开刚才的用户,查看登录信息,如下图:该文件可以详细的记录用户的登录、注销信息,还能记录登录失败的信息,很方便我们查找。
使用“脚本”限制用户多点并发登录,可以很方便的进行部署,只需要在服务器上加载登录脚本就可以了,而且可以保证在任何时刻用户都只登录一台机器, Login$ 中记录的用户登录信息也方便管理员查找、备案。用户也不会被限制在一台机器上登录,同一时间用户只登录一台机器的目的也达到了。



     本文转自Tonyguo 51CTO博客,原文链接: http://blog.51cto.com/tonyguo/160816 ,如需转载请自行联系原作者





相关文章
|
7月前
|
监控 机器人 Shell
用shell脚本编写一个监控应用服务的脚本,外发到微信群
用shell脚本编写一个监控应用服务的脚本,外发到微信群
87 1
|
1月前
|
SQL 编解码 数据库
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行
14 1
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行
jira学习案例24-用useAuth切换登录与非登录状态
jira学习案例24-用useAuth切换登录与非登录状态
103 0
jira学习案例24-用useAuth切换登录与非登录状态
|
存储 JSON 前端开发
表白墙服务器版【交互接口、服务器端代码、前端代码、数据存入文件/数据库】
表白墙服务器版【交互接口、服务器端代码、前端代码、数据存入文件/数据库】
表白墙服务器版【交互接口、服务器端代码、前端代码、数据存入文件/数据库】
|
安全 前端开发 JavaScript
Web前端登录拼图验证功能,看你是人还是机器
相信大家经常在各种网站上登录、注册、下发短信、活动等会看到,系统会弹出来一个滑块验证,让你把一个滑块滑到指定空缺的位置(还有其他种形式,比如按顺序点击文字或图案等等),系统会校验,校验正确则登录成功,否则即使账号密码输入正确也无法登录。这样做主要是为了系统更安全,减少被机器模拟登录行为破坏网站。今天就来白嫖一下腾讯云提供的图片验证功能。
244 0
Web前端登录拼图验证功能,看你是人还是机器
|
缓存 网络协议 JavaScript
|
Java 测试技术 调度
JSP+Servlet培训班作业管理系统[1]-登录功能的简单实现
本文目录 1. 背景 2. 编写登录页面 3. 获取表单输入内容 3. 处理登录请求 4. 编写用户类 5. 封装登录服务 6. 完善登录控制 7. 跳转错误信息提示页面 7. 测试
124 0
|
数据库 数据安全/隐私保护 PHP
如何实现网站的登录功能
如何实现网站的登录功能http://www.bieryun.com/4623.html 我记得我刚刚学习基本PHP的时候,我正在尝试创建一个基本的网站。除了一件事,我还想到了其他一切。我想在我的网站上实现登录功能,我不知道该怎么做。
2577 0
|
测试技术
新疆地区用户连接优化案例
原作者:互联网公共服务事业部架构师,日进。本文展示怎样通过阿里云的产品对某些区域的访问进行加速。
2123 0