Forum
Ö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
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
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.
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
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.