Forum

Limit login script ...
 
Bildirimler
Hepsini Temizle

Limit login script için yardım talebi.

5 Yazılar
2 Üyeler
0 Reactions
662 Görüntüleme
(@ismail.ozturk)
Gönderiler: 18
Eminent Member
Konu başlatıcı
 

Öncelikle herkese iyi bayramlar. 

Aşağıdaki scriptte iki adet seçenek mevcut. Yapılan seçime göre oturumu açık olan diğer PC'nin açık olan oturumunu kapatıyor

yada hayır seçeneği seçilirse mevcut oturumu sonlandırıyor. Bir üçüncü durum daha var.

eğer hiç birşey seçilmezse 2 bilgisayarda da oturum açık kalıyor.

aşağıdaki scriptte eğer kullanıcı hiç birşey seçmezse 120 sn sonra mevcut oturumu kapatacak bir düzenleme yapmak istiyorum.

fakat kod bilgim yetersiz. Bu noktada yardımcı olabilirseniz çok sevinirim. 

Teşekkür ederim.

 

 

vbs kodu : 

 

'== Limit User Logins
'== Written by: James Gzowski (2010)
'== Logon Script

'== This script consists of two parts, Logon.vbs & Logoff.vbs
'== The script is designed to prevent multiple logons on a network from different workstations
'== This will not work for Terminal Servers where each user will login on the same server.
'== Users NEED to logoff through the proper process otherwise the script will still assume they are logged in.
'== If this happens, then the next user to log into their workstation will clear their session
'izinliler.txt dosyasına yazılan kullanıcıların birden fazla oturum açmasına izin verlir
'log dosyalarının paylaşım alanı Servershare değişkenine yazılmalıdır

'Set Objects
Set oShell = CreateObject( "WScript.Shell" )
Set objFSO = CreateObject("Scripting.FileSystemObject")
SET WshShell = createObject("WScript.shell")
Const intForReading = 1
Const intForWriting = 2
Const intForAppending = 8
ServerShare = "\\10.135.68.3\userlogs$\" 'Requires Users Full Read/Write Access
DCShare = "\\10.135.68.3\logoff_user$\" 'Requires Users Full Read/Write Access
OldSession = ""
CurrentWorkstation = ""

'Get Username & Workstation
UserID=oShell.ExpandEnvironmentStrings("%UserName%")
WorkstationID=oShell.ExpandEnvironmentStrings("%ComputerName%")

'Check whether user is allowed to logon more than once, if so set to true

SET checkShell = createObject("WScript.shell")

Dim oFSO, oTS, AllowedUser,Allowed

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oTS = oFSO.OpenTextFile(Servershare & "_izinliler.log")

Allowed = "FALSE"

Do Until oTS.AtEndOfStream

'get next username

Suser = oTS.ReadLine

if UserID = Suser then Allowed = "TRUE"

Loop

'close the text file

'wshShell.Popup "User Allowed " & Allowed
'SET WshShell = Nothing

oTS.Close

SELECT CASE Allowed

CASE "FALSE"

'Check Whether Workstation Has Old Login Session and clear

'If objFSO.FileExists( ServerShare & WorkstationID & ".txt") Then
' Set objFile = objFSO.OpenTextFile(ServerShare & WorkstationID & ".txt", intForReading, False)
' Oldsession = objFile.ReadLine
' objFile.Close
' If objFSO.FileExists( Servershare & Oldsession & ".txt" ) Then
' objFSO.DeleteFile(ServerShare & Oldsession & ".txt")
' End if
'End if

'Check If Users Logged In
If objFSO.FileExists ( ServerShare & UserID & ".txt") then
Set objFile = objFSO.OpenTextFile(ServerShare & UserID & ".txt", intForReading, False)
CurrentWorkstation = objFile.ReadLine
objFile.Close

If CurrentWorkstation = WorkstationID Then
'Create Text Files
Set objFile = objFSO.CreateTextFile(ServerShare & WorkstationID & ".txt")
ObjFile.Write(UserID)
ObjFile.Close

'Report Accepted Login To LoginsAllowed.log
If objFSO.FileExists (ServerShare & "_Logon.log") then

SET ObjFile = objFSO.OpenTextFile(ServerShare & "_Logon.log", 8, True)
else
Set objFile = objFSO.CreateTextFile(ServerShare & "_Logon.log")
End If
ObjFile.Writeline ("Oturum Açma: " & Date & ", " & Time & ", Workstation: " & WorkstationID & ", Username: " & UserID)
ObjFile.Close
Else

result = MsgBox ("Sayın " + UserID + " Hastanemiz Bilgi Güvenliği Politikası gereği aynı anda sadece bir bilgisayarda oturum açabilirsiniz."+ vbcrlf + vbcrlf + CurrentWorkstation + " BİLGİSAYARINDA AÇIK KALAN OTURUMUNUZ KAPATILSIN MI?"+vbcrlf +vbcrlf +" Not: Oturumun kapatılmaya zorlanması nedeniyle, yaşanabilecek veri kayıpları ve kaydedilmemiş dosyalarda sorumluluk kullanıcılara aittir", vbYesNo, "Çoklu Oturum Açma Tespiti")

Select Case result
Case vbYes

result2 = MsgBox (CurrentWorkstation + " bilgisayarındaki oturumunuz kapatılacak ve bu işlem kayıt altına alınacaktır. ONAYLIYOR MUSUNUZ?", vbYesNo, "Teyit mesajı")

Select Case result2
Case vbYes
'Uzak Oturum Kapatılacak
'Uzaktan Kapatılan oturum Kayıtlarını _UzaktanKapatilanlar.txt dosyasına yaz
If objFSO.FileExists (ServerShare & "_UzaktanKapatilanlar.txt") then
SET ObjFile = objFSO.OpenTextFile(ServerShare & "_UzaktanKapatilanlar.txt", 8, True)
else
Set objFile = objFSO.CreateTextFile(ServerShare & "_UzaktanKapatilanlar.txt")
End If
ObjFile.Writeline ("Kapatılan Oturum: " & Date & "," & Time & ",Kullanıcı: " & UserID & ", PC:"& WorkstationID & ", Kapatılan PC:" & CurrentWorkstation )
ObjFile.Close

Set objFile = objFSO.CreateTextFile(DCShare & "PC.txt")
ObjFile.Writeline (UserID)
ObjFile.Writeline (CurrentWorkstation)
ObjFile.Close

'eski oturumları silelim
If objFSO.FileExists (ServerShare & WorkstationID & ".txt") then
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(ServerShare & WorkstationID & ".txt")
End If
If objFSO.FileExists (ServerShare & UserID & ".txt") then
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(ServerShare & UserID & ".txt")
End If
If objFSO.FileExists (ServerShare & CurrentWorkstation & ".txt") then
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(ServerShare & CurrentWorkstation & ".txt")
End If

'Create Text Files

Set objFile = objFSO.CreateTextFile(ServerShare & WorkstationID & ".txt")
ObjFile.Write(UserID)
ObjFile.Close
Set objFile = objFSO.CreateTextFile(ServerShare & UserID & ".txt")
ObjFile.Write(WorkstationID)
ObjFile.Close

'Report Accepted Login To LoginsAllowed.log
If objFSO.FileExists (ServerShare & "_Logon.log") then
SET ObjFile = objFSO.OpenTextFile(ServerShare & "_Logon.log", 8, True)
else
Set objFile = objFSO.CreateTextFile(ServerShare & "_Logon.log")
End If
ObjFile.Writeline ("Oturum Açılış: " & Tarih & "," & Time & ", PC: " & WorkstationID & ", Kullanıcı: " & UserID)
ObjFile.Close

MsgBox("Diğer Bilgisayardaki oturum kapatılmıştır")
Case vbNo
'Uzak oturum kapatılmayacak. Mevcut Oturum kapatılacak
'Report Failed Login To engellenenler.log
If objFSO.FileExists (ServerShare & "_Engellenenler.log") then

SET ObjFile = objFSO.OpenTextFile(ServerShare & "_Engellenenler.log", intForAppending, True)
else
Set objFile = objFSO.CreateTextFile(ServerShare & "_Engellenenler.log")
End If
ObjFile.Writeline ("Tarih: " & Date & "," & Time & ", PC: " & WorkstationID & ", Kullanıcı: " & UserID)
ObjFile.Close

'Shutdown Process'
shutdown = "shutdown /l"
WshShell.Popup _
"Oturumunuz 60 saniye içerisinde otomatik olarak kapatılacaktır",60,"Uyarı",16
WshShell.Run(shutdown)

End Select

 

Case vbNo
'Report Failed Login To engellenenler.log
If objFSO.FileExists (ServerShare & "_Engellenenler.log") then

SET ObjFile = objFSO.OpenTextFile(ServerShare & "_Engellenenler.log", intForAppending, True)
else
Set objFile = objFSO.CreateTextFile(ServerShare & "_Engellenenler.log")
End If
ObjFile.Writeline ("Tarih: " & Date & "," & Time & ", PC: " & WorkstationID & ", Kullanıcı: " & UserID)
ObjFile.Close

'Shutdown Process'
shutdown = "shutdown /l"
WshShell.Popup _
"Oturumunuz 60 saniye içerisinde otomatik olarak kapatılacaktır",60,"Uyarı",16
WshShell.Run(shutdown)

End Select

End if
Else

'Create Text Files
Set objFile = objFSO.CreateTextFile(ServerShare & WorkstationID & ".txt")
ObjFile.Write(UserID)
ObjFile.Close
Set objFile = objFSO.CreateTextFile(ServerShare & UserID & ".txt")
ObjFile.Write(WorkstationID)
ObjFile.Close

'Report Accepted Login To LoginsAllowed.log
If objFSO.FileExists (ServerShare & "_Logon.log") then

SET ObjFile = objFSO.OpenTextFile(ServerShare & "_Logon.log", 8, True)
else
Set objFile = objFSO.CreateTextFile(ServerShare & "_Logon.log")
End If
ObjFile.Writeline ("Oturum Açılış: " & Date & "," & Time & ", PC: " & WorkstationID & ", Kullanıcı: " & UserID)
ObjFile.Close
End If

End select

 
Gönderildi : 27/06/2017 18:16

(@eravse)
Gönderiler: 1753
Üye
 

merhaba

 

Select Case result
'Case vbYes

kısmında ıkı seceneginiz var ya asagıdakı gıbı

case else

ıle gıdeceksınız yada bır tımer olusturup bu kodu tamamen onun ıcınde do whıle a alacaksınız ornek

CreateObject("WScript.Shell").Popup "Hello!", 1800, "Title" 'süreniz doldu diyip diger bır methodu cagırıp loglayabılırsınız 

saygılarımla

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 29/06/2017 15:27

(@ismail.ozturk)
Gönderiler: 18
Eminent Member
Konu başlatıcı
 

Hocam cevabınız için teşekkür ederim. Dediğiniz gibi case else ekleyip shutdown ile tetikledim. Vbsedit ile test ettiğimde kod doru çalışıyor fakat gerçek ortamda test ettiğimde açılan mesaj boxtaki seçenekleri seçmediğim zaman kod tetiklenip oturum kapanmıyor. 

hocam rica etsem örneği biraz daha açabilir misiniz ? 

 

Teşekkür Ederim.

 
Gönderildi : 02/07/2017 17:49

(@eravse)
Gönderiler: 1753
Üye
 

merhaba bana bıraz sure verırsenız ufak bır ornek yapmaya calısırım uygunmudur  ?

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 02/07/2017 18:18

(@ismail.ozturk)
Gönderiler: 18
Eminent Member
Konu başlatıcı
 

Teşekkür ederim hocam. Script sorunsuz hale gelince tamamını burada paylaşacağım. Diğer arkadaşlarımızda kullanmak isteyebilir. 

 

İyi günler. 

 
Gönderildi : 02/07/2017 19:31

Paylaş: