Войти

Показать полную графическую версию : [решено] вопрос про пользователей в Windows


DimmKo
25-12-2015, 10:28
Добрый день.
Для мониторинга активности на серверах создал задачу, которая при авторизации пользователя отправляет e-mail с темой "Произведен вход в Windows".
Но хотелось бы немного расширить информативность, т.е. какой именно пользователь осуществил вход в ОС.

Отправка осуществляется через программу blat

Подскажите, пожалуйста, как можно передать в нее параметр о конкретном пользователе?
Спасибо.

UPD
и вот еще странность: если я логинюсь удаленно, то не работает эта команда.

WMIC /NODE: "[имя_компьютера]" COMPUTERSYSTEM GET USERNAME
UserName

Iska
25-12-2015, 12:58
Покажите саму:
создал задачу »

DimmKo
26-12-2015, 11:23
Iska, я вчера гуглил гуглил и нагуглил одну команду.
WMIC /NODE: "имя_компьютера" COMPUTERSYSTEM GET USERNAME

Потом сделал вот такой bat'ничек:
echo off
WMIC /NODE: "[my_pc]" COMPUTERSYSTEM GET USERNAME >> d:\user.txt
start f:\blat3211\full\blat.exe -charset CP-1251 -bodyF d:\user.txt -subject "Login Windows" -to [my_mail] -server [my_server] -f [mail] -u [login] -pw [password]
ping 127.0.0.1 -n 6 > nul
del d:\user.txt

оно раньше выдавало, что пользователь такой-то... но теперь перестало.

Iska
26-12-2015, 15:59
и нагуглил одну команду.
WMIC /NODE: "имя_компьютера" COMPUTERSYSTEM GET USERNAME »
wmic.exe /node:MachineName ComputerSystem get UserName
— т.е., никаких пробелов между «/node:» и именем/адресом машины. Для текущей машины вообще весь параметр «/node» не нужен. Кодировка вывода wmic.exe — Unicode, UTF-16LE/1200. «start» вообще уберите, зачем он нужен?

DimmKo
28-12-2015, 11:30
Iska,
— т.е., никаких пробелов между «/node:» и именем/адресом машины. Для текущей машины вообще весь параметр «/node» не нужен. Кодировка вывода wmic.exe — Unicode, UTF-16LE/1200. «start» вообще уберите, зачем он нужен? »
1) пробел есть. Я прям скопировал и вставил
2) без "start" почему-то выдавало что неможет запустить Blat.exe
Я не силен в скриптах, потому нашел вот такое решение.

Поискав уже по этой команде нашел чуточку другое решение
WMIC /NODE: xxx.xxx.xxx.xxx COMPUTERSYSTEM GET USERNAME
Will return the username currently logged into xxx.xxx.xxx.xxx

Буду его пробовать.

Charg
28-12-2015, 15:24
пробел есть. Я прям скопировал и вставил »
Ну так а не должно быть, тебе ж сказали...

Мог бы банально хэлп почитать:
C:\Users\charg>wmic /node /?

NODE - Specify which servers the alias will operate against.
USAGE:

/NODE:<machine id list>
NOTE: <machine id list> ::= <@filename | machine id> | <@filename | machine id>
<,machine id list>

NOTE: Enclose the switch value in double quotes, if the value contains special
characters like '-' or '/'.

Iska
28-12-2015, 16:05
1) пробел есть. Я прям скопировал и вставил »
Пробела не должно быть.

2) без "start" почему-то выдавало что неможет запустить Blat.exe »
«start» тут не нужен. Если будет «почему-то выдавать, что неможет запустить» — покажете точное сообщение об ошибке.

Поискав уже по этой команде нашел чуточку другое решение »
Абсолютно идентичное предыдущему :).

El Scorpio
29-12-2015, 02:14
Iska, я вчера гуглил гуглил и нагуглил одну команду.

WMIC /NODE: "имя_компьютера" COMPUTERSYSTEM GET USERNAME
Потом сделал вот такой bat'ничек:
Скрытый текст
echo off
WMIC /NODE: "[my_pc]" COMPUTERSYSTEM GET USERNAME >> d:\user.txt
start f:\blat3211\full\blat.exe -charset CP-1251 -bodyF d:\user.txt -subject "Login Windows" -to [my_mail] -server [my_server] -f [mail] -u [login] -pw [password]
ping 127.0.0.1 -n 6 > nul
del d:\user.txt »

Товарищи, а разве переменные окружения USERNAME и COMPUTERNAME уже отменили?
blat.exe -charset CP-1251 -subject "Login %USERNAME% at %COMPUTERNAME%" -to [my_mail] -server [my_server] -f [mail] -u [login] -pw [password]

Iska
29-12-2015, 04:01
Товарищи, а разве переменные окружения USERNAME и COMPUTERNAME уже отменили? »
Конечно, не отменили. Но автор никак не хочет показать свою задачу, а вместо этого гуглит, гуглит и гуглит…

DimmKo
29-12-2015, 08:24
Iska, ваше ЧСВ явно зашкаливает...
с пробелом работает

El Scorpio,
спасибо. Попробую сделать как вы сказали.

Iska
29-12-2015, 08:36
Iska, ваше ЧСВ явно зашкаливает... »
DimmKo, хотите поговорить об этом?

DimmKo
29-12-2015, 08:52
Iska, мне не до глупостей, извините.

Код:
blat.exe -charset CP-1251 -subject "Login %USERNAME% at %COMPUTERNAME%" -to [my_mail] -server [my_server] »
попробовал ваш совет - blat стопорится. Прилагаю скрин.
Может я вас не правильно понял? Хотя, просто скопировал -subject "..."

http://deltamoby.ru/image.php?di=LJU8

Iska
29-12-2015, 09:16
Iska, мне не до глупостей, извините. »
Так и не начинали бы.

El Scorpio
30-12-2015, 01:33
попробовал ваш совет - blat стопорится. Прилагаю скрин. »

Поскольку я убрал параметр -bodyF, загромождающий конструкцию лишними операциями создания/удаления временного файла, скорее всего blat ожидает ввод текста письма.
Можно использовать параметр blat -body "Текст сообщения " .... или конвейер echo "Текст сообщения" | blat ...

Само сообщение можно опять таки оформить через системные переменные.
Например "User '%USERNAME%' was login on computer '%COMPUTERNAME%' at %DATE% %TIME%"

Iska
30-12-2015, 03:27
Ещё вариант может быть такой, что почтовому провайдеру только SSL подавай.

DimmKo
30-12-2015, 08:02
El Scorpio, супер!!!!
Спасибо!!! Прям вот то, что хотел. :up
Параметр bodyF я добавил т.к. сначала отрабатывала WMIC /NODE: "[имя_компьютера]" COMPUTERSYSTEM GET USERNAME, которая в текстовый файл передавала полученные данные. А потом на основе этого файла blat формировал письмо. :dont-know
Я только начинаю вникать в администрирование и про системные переменные слышал, но пока еще не научился их использовать.
Знаю, что конструкция, как вы упомянули выше (echo ... | blat ...), используется в Linux. Там мне довелось самому делать нечто в этом роде, но только более простое.
Попробую проверить будет ли отправлять сообщение, если пользователь через удаленный сеанс залогинился.

Iska, спасибо за совет. Я в справке blat'а не нашел такой опции.
До этого пробовал sendmail, но он вообще не захотел почту отправлять. Возможно, что из-за пароля, т.к. там были спец символы (@#$^!) и он писал что "команда не найдена". Я пробовал пароль заключать в " " и ' ' кавычки, но всё равно не уходила почта. :drug:
И в связи с этим я нашел информацию про blat и решил им воспользоваться.
Единственно, что почтовик "местный", т.е. работает внутри сети. Как он настроен я пока не выяснял - сам по себе он или некий relay. Но с этим я буду разбираться на НГ каникулах.
Сейчас вот хотелось бы реализовать уведомления кто из пользователей логинился. А то бывает неразбериха кто и что там правит, а потом концов не найти.

Всем спасибо за ваши советы!
С наступающим НГ! :vine

El Scorpio
30-12-2015, 08:23
Я только начинаю вникать в администрирование и про системные переменные слышал, но пока еще не научился их использовать. »
А что тут "использовать"?
Пишешь в командной строке set и читаешь список значений.
Потом используешь по мере необходимости. При использовании в командной строке или командном файле нужно обрамлять "процентами" %ИМЯ_ПЕРЕМЕННОЙ%

Знаю, что конструкция, как вы упомянули выше (echo ... | blat ...), используется в Linux. »
Открою страшную тайну - конструкции вида "команда1 | команда 2" и "команда > файл" использовались ещё в MS-DOS.
Конечно, CMD по своим возможностям значительно уступает BASH, однако многие функции работают одинаково

До этого пробовал sendmail, но он вообще не захотел почту отправлять. Возможно, что из-за пароля, т.к. там были спец символы (@#$^!) и он писал что "команда не найдена". Я пробовал пароль заключать в " " и ' ' кавычки, но всё равно не уходила почта.
И в связи с этим я нашел информацию про blat и решил им воспользоваться. »
Также blat может хранить параметры в реестре или в текстовом файле.

Единственно, что почтовик "местный", т.е. работает внутри сети. Как он настроен я пока не выяснял - сам по себе он или некий relay. Но с этим я буду разбираться на НГ каникулах. »
Если почтовик имеет доменное имя, которое зарегистрировано в глобальном DNS, возможно он работает сам по себе.
Ежели домен .local - однозначно релей, пересылающий почту через какой-то внешний сервер.
Для почтовой программы - разницы никакой. Главное, чтобы при использовании SSL сертификат почтового сервера был выдан доверенным центром или же добавлен в список "доверенных" на компьютере.

DimmKo
04-01-2016, 18:45
всем спасибо за помощь!
Всё работает.




© OSzone.net 2001-2012