Скрипт мониторинга входа-выхода пользователей на компьютере в домене

Скрипт мониторинга входа-выхода пользователей на компьютере в домене

Как то очень давно поставили задачу мониторить одного пользователя в плане “время включения и выключения его машины”. Если задачу развивать, то можно и подкрутить визуальный интерфейс для подробных отчетов и графиков). Но пока руки не дошли… Выкладываю, может кому-то пригодится.
Итак требовалось получить
1)Какой пользователь домена зашел или вышел (logon-logoff) на машину?
2)Имя компьютера
3)Точное время входа

Я решил для начала сделать скриптик на VBA, который при запуске записывает в файл информацию о компьютере, имя вошедшего на машину и когда это было

Скрипт

Const MY_COMPUTER = &H11&
Set objNetwork = CreateObject(“Wscript.Network”)
objComputerName = objNetwork.ComputerName
objUserName = objNetwork.UserName
Set objShell = CreateObject(“Shell.Application”)
Set objFolder = objShell.Namespace(MY_COMPUTER)
Set objFolderItem = objFolder.Self
objFolderItem.Name = “*Мой комп*” & vbNewLine &”User: ” & vbNewLine & (objUserName) & vbNewLine & “Компьютер: ” & vbNewLine & (objComputerName) & vbNewLine & “*”

On Error Resume Next
Const ForWriting = 2
Const ForReading = 1
Const ForAppending = 8
Const TristateFalse = 0
Set fso = CreateObject(“Scripting.FileSystemObject”)
Set GObjArgs = WScript.Arguments
GStrCmd = GObjArgs(0)
Call crypt(GStrCmd)

Sub crypt(msg)
n = Len(msg)
c = 0
Do Until c = n
c = c + 1
t1 = Mid(msg,c,1)
ch = Chr(asc(t1)+n)
output = output & ch
Loop
Set GObjLocalF = fso.OpenTextFile(“\\YOURMAINSERVER\NETLOGON\1231.txt”,ForAppending,True)
GObjLocalF.WriteLine “#################################”
GObjLocalF.WriteLine objFolderItem.Name
GObjLocalF.WriteLine Date & ”  ” & Time
GObjLocalF.WriteLine “#################################”
GObjLocalF.Close
End Sub

 

Сохраняем его под расширением VBS

Запускаем и видим, что в файл по пути “\\YOURMAINSERVER\NETLOGON\logon.txt” записалась нам нужная инфа.

Круто.

Теперь добавляем скриптик в Групповые политики домена при входе пользователя домена

Груповые политики домена. Добавление скрипта при входе или выходе юзера на машину

При logon будем писать инфу в файл \\YOURMAINSERVER\NETLOGON\logon%date%.txt

При выходе из системы \\YOURMAINSERVER\NETLOGON\logoff%date%.txt

Результат выполнения

#################################
*Мой комп*
User:
adminvestnik
Компьютер:
Admin
*
5/13/2011  6:56:34 PM
#################################

Таким образом задача как я считаю решена, может и не оптимально, но сердито))

В любом случае это использовалось временно, если у кого-то возникнет желание, то можно модифицировать и доработать с визуальным интерфейсом от VBA, писать ежедневные файлы, строить отчеты, но так как у меня мало времени на все, то пока оставлю эту задачу на будущее)

 

5 thoughts on “Скрипт мониторинга входа-выхода пользователей на компьютере в домене”

    1. Ничто, ничего не нагружает. 0.000000001 памяти. Так что не надо лялля

  1. Интересно было бы то же, но для пользователей удаленного рабочего стола. А именно – с какого компьютера осуществлялось подключение, его IP.

    1. К сожалению для Вас, я перешел на Mac OS. Но по Вашему вопросу – это реально сделать. Самый простой способ для себя вижу такой. Запускать при входе/выходе PHP скрипт c помощью сurl.
      Скачать можно здесь https://curl.haxx.se/dlwiz/?type=bin&os=Win32&flav=-&ver=2000%2FXP Запуск такой(из командной строки в файле *.bat) \\SHAREDDISK\curl http://10.0.0.2/tmpfolder/logon.php (любой вебсервер в локальной сети)

      В скрипте прописать запись IP в нужное место
      Вот что можно записать: http://php.net/manual/ru/reserved.variables.server.php

      Например

      < ?php header('Access-Control-Allow-Origin: *'); $requestUserAgent = urlencode($_SERVER['HTTP_USER_AGENT']); $requestRemoteAddress = urlencode($_SERVER['REMOTE_ADDR']); $requestRemoteREFERER = urlencode($_SERVER['HTTP_REFERER']); file_put_contents('remoteLogin.txt',$requestUserAgent); //запишем в файл Юзер Агент ?>

      НО – НЕ ПРОВЕРЯЛ. По идее должно работать

Leave a Reply

Your email address will not be published. Required fields are marked *