Как в сервере найти своего пользователя

🔍 Простой поиск по базе знаний

Чтобы найти UID пользователя (ID пользователя) или GID (идентификатор группы) и другую информацию в Linux/Unix-подобных Логотип Open Sourceоперационных системах, используйте команду id.

Эта команда полезна для поиска следующей информации:

  • Получить имя пользователя и реальный идентификатор пользователя
  • Найти UID конкретного пользователя
  • Перечислите все группы, к которым принадлежит пользователь
  • Показать UID и все группы, связанные с пользователем
  • Отображение контекста безопасности текущего пользователя
  • Эффективное имя пользователя Linux или Unix и эффективный идентификатор пользователя (UID)
  • Имя действующей группы пользователей Linux или Unix и идентификатор эффективной группы (GID)

Цель

Отображает системные идентификаторы указанного пользователя.

Основной синтаксис:

id
id [UserNameHere]
id [параметры]
id [параметры] [имя_пользователя]

По умолчанию команда id показывает имена пользователей и групп и числовые идентификаторы вызывающего процесса, то есть текущего пользователя, который запускает команду id на экране. Если имя пользователя или идентификатор пользователя ([UserNameHere]) указаны в командной строке, отображаются идентификаторы пользователя и группы этого пользователя.

Показать свой собственный UID и GID

Введите команду:

$id

Пример выходов:

uid=1000(vasia) gid=1000(vasia) группы=1000(vasia),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),130(sambashare),132(libvirtd),134(lxd)

Как найти UID конкретного пользователя?

В этом примере найдите UID пользователя vasia, введите:

id -u {UserNameHere}
id -u vasia

Пример выходов:

501

Как найти GID конкретного пользователя?

В этом примере найдите GID пользователя vasia, запустите:

id -g {UserNameHere}
id -g vasia

Пример выходов:

20

Как увидеть UID и все группы, связанные с именем пользователя?

В этом примере найдите UID и все группы, связанные с пользователем с именем «root», введите:

id {UserNameHere}
id root

Пример выходов:

uid=0(root) gid=0(root) группы=0(root)

Как узнать все группы, к которым принадлежит пользователь…

В этом примере отобразите UID и все группы, связанные (вторичные группы) с пользователем с именем «vasia», запустите:

id -G {UserNameHere}
id -G vasia

Пример выходов

1000 20 12 61 79 80 81 98 33 100 204 398 399

Отображать имя вместо UID / GID

По умолчанию команда id отображает число для опций -G, -g и -u. Вы можете заставить команду id отображать имя UID или GID вместо номера для опций -G, -g и -u, передав опцию -n следующим образом:

id -ng {UserNameHere}
id -nu {UserNameHere}
id -nG {UserNameHere}
id -nG vasia

Пример выходов:

vasia adm cdrom sudo dip plugdev lpadmin sambashare libvirtd lxd

Как отобразить реальный идентификатор вместо эффективного идентификатора для указанного пользователя?

Вы можете показать действительный идентификатор для параметров -g, -G и -u вместо эффективного идентификатора, передав опцию -r:

id -r -g {UserNameHere}
id -r -u {UserNameHere}
 
### [NOTE]###########################
### -r and -G only works on Linux ###
#####################################
id -r -G {UserNameHere}
id -r -u vasia

Пример выходов:

501

Параметры команды id

Опция Назначение OS
-g Показать только эффективный идентификатор группы ALL
-G Показать все идентификаторы группы ALL
-u Показать только эффективный идентификатор пользователя ALL
-n Показать имя вместо числа, для -u или -g ALL
-r Показать действительный идентификатор вместо действующего, с -u или -g ALL
-Z Показать только контекст безопасности текущего пользователя SELinux SELinux
-A  Показать идентификатор пользователя аудита процесса и другие свойства аудита процесса Только Unix-like!!!

Смотрите также

man id — Страница руководства по команде id

Содержание

  1. Удобный поиск компьютера пользователя в домене Windows
  2. Что у нас есть?
  3. Что мы хотим?
  4. Название?
  5. Приступим к реализации
  6. Определение ip адреса и mac адреса компьютера в сети
  7. Содержание статьи:
  8. Как узнать свой mac-адрес и ip-адрес в сети
  9. Определение ip-адреса чужого компьютера в сети
  10. Определение mac-адреса чужого компьютера в локальной сети
  11. Полезные мелочи Windows администратора, поиск компьютеров пользователей и не только
  12. Описание
  13. Использование
  14. Переменные среды
  15. Операционная система
  16. Пользователь
  17. Компьютер
  18. Материнская плата
  19. Центральный процессор
  20. Оперативная память
  21. Графический процессор
  22. Сетевой адаптер
  23. Жёсткий диск
  24. Твердотельный накопитель
  25. Сменный накопитель
  26. Специализированный накопитель
  27. Оптический привод
  28. Программное обеспечение
  29. Другие переменные
  30. Примеры использования
  31. Получение данных
  32. Экспорт данных
  33. Импорт данных
  34. Использование данных
  35. Инвентаризация компьютеров
  36. env.send
  37. Описание
  38. Использование
  39. Примеры использования
  40. env.search
  41. Описание
  42. Использование
  43. Поиск объектов
  44. Переменные среды
  45. Операционная система
  46. Пользователь
  47. Сетевой адаптер
  48. Другие переменные
  49. Примеры использования
  50. Обнаружение сетевых устройств
  51. Обнаружение
  52. Сбор сведений
  53. Как это работает на примере Zabbix
  54. Поиск компьютера в сети по имени

Удобный поиск компьютера пользователя в домене Windows

Привет всем!
Работаю в компании. 1500+ активных пользователей.
Организован ХелпДеск, сотрудники регистрируют тикеты в системе, но, как-то так получается, что часть из юзеров забывают указывать имя пк, за которым они находятся.

Для выяснения этой информации (по телефону/email/экстрасенсорные способности) девочки из поддержки тратят драгоценное время, которое они могли бы уделить свежей чашке кофе или разговорам о новом платье (шутка). Наши сотрудники постоянно заняты своей непосредственной работой.

Идея (не инновация конечно) — писать данные о логонах пользователя в единую базу, а потом через веб оперативно искать нужную информацию.

88fd1f46bca94a75a370517aa129096e

Что у нас есть?

Windows среда (ХР/7/2003/2008), учетные записи хранятся в AD, все устройства работаю в локальной сети в качестве СУБД используем MSSQL 2005/2008R2.

Что мы хотим?

Поиск информации через веб интерфейс:

Должна отображаться информация:

Название?

Так как «решением» будут пользоваться несколько человек (от 5 до 35 человек), надо как-то его обозвать для удобства. Нарекли мы его «SuperVisor».

Приступим к реализации

Как будем писать в БД?

Первое, что пришло в голову — это создать bat файл с sqlcmd, но для каждой версии Windows нужна своя версия утилиты sqlcmd. Неудобно, и мы не стали копать глубже.

Вторым решением было создать небольшой exe клиент, который при запуске будет собирать данные об имени доменной учетной записи, имени пк, ip адресе пк и после получения этой информации будет выполняться вставка данных в БД. Программу размещаем, например, в папке NETLOGON на контроллере домена и групповыми политиками распространяем на ПК/Сервера в локальной сети компании.

Дальше алгоритм такой:

Таблицы созданы и наполняются данными. Забыл написать, что сервер БД у нас виртуальный и работает под Windows Server 2003R2, СУБД MSSQL 2008R2. Сервер приложения виртуальный, Windows 2003R2, Apache 2.2 + PHP 5.2

Следующий шаг — создание веб интерфейса для того, чтобы системные администраторы и сотрудники хелпдеска могли комфортно работать с сервисом. Во внутренних разработках, для экономии времени, я использую фреймфорк Bootstrap. Главная страница, до того как начинают вводить данные в поисковую строку, выглядит так:

000e920074fb441fb7bccb56f45a8bfa

В строку поиска можно ввести фамилию сотрудника/учетную запись(логин) или имя компьютера:

abd791eecae145938beb51bfedc63f46

«Супервизор» работает у нас в компании около года, со своей главной задачей справляется отлично. Тикеты теперь берутся в работу оперативнее, сотрудникам не нужно тратить время на уточнение дополнительной информации для того, чтобы преступить к решению заявки.

Данное решение по определению имени компьютера получилось современным и удобным, на мой взгляд.

Источник

Определение ip адреса и mac адреса компьютера в сети

Содержание статьи:

Как узнать свой mac-адрес и ip-адрес в сети

Для начала, в двух словах обозначим, чем ip-адрес отличается от mac-адреса.

В отличии от ip-адреса машины, который может быть как статическим (постоянным), так и динамическим (изменяющимся), mac-адрес компьютера присваивается оборудованию и изменение его возможно только заменой составных частей машины. Не случайно этот идентификатор иначе называется Hardware Address. То есть, говоря проще:

Благодаря этой особенности данного параметра, использование mac-адреса порой оказывается более выгодно в сравнении с ip

Чтобы узнать свой ip адрес в локальной сети через командную строку, а также узнать mac-адрес своего оборудования, воспользуемся двумя основными способами:

ipconfig allдля определения только ip-адреса достаточно команды ipconfig без параметра /all
В ответ вы увидите информацию о адресе своего узла в локалке (локальной сети) и физическом адресе сетевого оборудования

Определение ip-адреса чужого компьютера в сети

Comp set

Также, список NetBIOS имён компьютеров в локальной сети можно просканировать командой

Допустим, нам интересен ip-адрес компьютера с именем APRESN-PC из скриншота, прикреплённого выше. Запускаем командную строку Windows и выполняем в ней следующую команду:

Консоль системы начнёт обмен пакетами с конечным узлом, отобразив его адрес

ping ip

Определение mac-адреса чужого компьютера в локальной сети

Если нас интересует, как узнать mac-адрес компьютера, находящегося в одной локальной сети с нами, достаточно в командной строке Windows на своей машине выполнить следующую команду:

В появившейся информации мы получим искомый mac компьютера APRESN-PC

nbtstat a

И последняя команда, которой мы сегодня уделим внимание.
Если вам не интересно имя компьютера, а проверять mac-адрес каждой машины по ip слишком муторно, можно просто послать запрос arp с параметром -a

Результатом выполнения этой команды будет таблица соответствия mac-адресов и ip-адресов в сети

arp a

Теперь мы можем узнать и ip-адрес, и mac-адрес компьютеров в локальной сети.

Всем сетевой безопасности и высокоскоростной передачи данных

Источник

Полезные мелочи Windows администратора, поиск компьютеров пользователей и не только

Как-то давно на хабре публиковалась статья Опытные мелочи Windows-админа. В ней рассказывалось как быстро и достаточно эффективно находить компьютеры на которых залогинился тот или иной пользователь.

image loaderДемонстрация работы скрипта env.search

Мне эта идея понравилась, т.к. всё делается достаточно просто, быстро и без модификации схемы Active Directory. Я постепенно улучшал изложенные в статье подходы и в итоге появились три скрипта, которыми я и хочу поделится с вами.

image loaderВывод в консоль переменных созданных скриптом env

env – с помощью этого скрипта получаем данные по компьютеру и добавляем эти данные во временные переменные среды.

env.send – с помощью этого скрипта данные из переменных среды передаём в описание компьютера в Active Directory.

env.search – с помощью этого скрипта ищем нужный нам компьютер в Active Directory и подключаемся к нему.

На самом деле скрипты более универсальные и с помощью них можно делать не только изложенные выше действия, а например:

image loaderРезультат работы скрипта env.send

Можно делать инвентаризацию компьютеров по сети в csv файл или в папку с ini файлами.

При отсутствии Active Directory можно по данным из переменных среды автоматически создавать ярлычок, который в своём названии будут содержать нужные данные по компьютеру, а при клике подключатся к нему или делать другое полезное системному администратору действие.

Поиск нужных компьютеров можно выполнять не только в Active Directory, но и в простом хранилище в виде папки с ini файлами.

А так же можно использовать временные переменные среды в других скриптах, например для установки программного обеспечения нужной разрядности и т.д.

Ниже привожу описание всех скриптов, что бы можно было более детально ознакомится с их возможностями. Надеюсь что они будут вам полезны, так же как мне. Сами скрипты и их исходные коды доступны в моём профиле на GitHub.

Описание

JScript для добавления в переменные среды временных переменных. Которые затем можно использовать в вызове других скриптов и приложений. Данные для переменных получаются через WMI с локального или удалённого компьютера в сети. Дополнительно переменные можно импортировать из файла и экспортировать в файл, поддерживается несколько форматов.

Достаточно часто системному администратору требуется получить общую информацию о компьютере и пользователе, чтобы затем её использовать в вызове другого скрипта или приложений. А также эту информацию иногда требуется сохранить в файл, например для инвентаризационного учёта или для использования в дальнейшем. Данный скрипт предоставляет такие возможности.

Использование

— Сетевое имя или ip адрес компьютера, в контексте которого нужно получить данные для переменных.

— Формат текстовых данных стандартного потока ввода для импорта переменных.

— Кодировка текстовых данных, направленных в стандартный поток ввода (можно использовать значение auto ).

— Формат текстовых данных стандартного потока вывода для экспорта переменных.

— Дополнительные опции (можно указать несколько).

Переменные среды

Скрипт добавляет описанные ниже временные переменные в среду процесса. Если нет данных для формирования переменной, то переменная не создаётся.

Операционная система

Пользователь

Компьютер

Материнская плата

Центральный процессор

Оперативная память

Графический процессор

Сетевой адаптер

Жёсткий диск

Твердотельный накопитель

Сменный накопитель

Специализированный накопитель

Оптический привод

Программное обеспечение

Браузер Google Chrome

Проигрыватель VLC Media Player

Приложение Spargo eFarma

Приложение SoftLine Ulus

Другие переменные

Примеры использования

Получение данных

Вывести в консоль все созданные переменные среды в контексте текущего компьютера.

Экспорт данных

Экспортировать все созданные переменные среды в ini файл с кодировкой CP 866 в контексте текущего компьютера.

Экспортировать все созданные переменные среды в ini файл с кодировкой UTF-16 LE в контексте текущего компьютера.

Импорт данных

Импортировать переменные среды из ini файла с кодировкой CP 866 и вывести их в консоль.

Импортировать переменные среды из ini файла с кодировкой UTF-16 LE и затем ещё и получить переменные среды в контексте компьютера RUS000WS001 и вывести их в консоль.

Импортировать переменные среды из csv файла с заголовком и с кодировкой UTF-16 LE и затем ещё и получить переменные среды в контексте компьютера RUS000WS001 и вывести их в консоль.

Использование данных

Выполнить тихую установку msi пакета с именем, соответствующим разрядности операционной системы текущего компьютера.

Открыть в VLC Media Player воспроизведение mp4 видео файла с именем, соответствующим логину пользователя и не дожидаться окончания воспроизведения.

Инвентаризация компьютеров

Загрузить из txt файла список компьютеров и сохранить о них информацию в папке inventory в виде ini файлов.

Загрузить из txt файла список компьютеров и сохранить о них информацию в один csv файл с заголовком.

Сконвертировать и объединить ini файлы из папке inventory в один tsv файл с заголовком.

env.send

Описание

JScript для отправки переменных среды в объект Active Directory по протоколу LDAP или в файл ярлыка в папке. Основная задача скрипта сохранить собранные данные с помощью другого скрипта env в любой атрибут (или атрибуты) объекта Active Directory или на основании этих данных создать по шаблону ярлык в папке. Чтобы затем использовать этот ярлык или данные из Active Directory в целях системного администрирования.

Использование

— Режим отправки переменных (заглавное написание выполняет только эмуляцию).

— Путь к папке или guid (допускается указание пустого значения).

Примеры использования

Предполагается использовать данный скрипт совместно с другим скриптом env, поэтому сразу в примерах будут использоваться два скрипта.

Когда компьютер в домене, то в групповых политиках при входе пользователя в компьютер, можно прописать следующий скрипт, что бы информация о компьютере и пользователе прописалась в атрибуты описания и местоположения компьютера в Active Directory в пределах Organizational Unit c guid . Что бы затем быстро находить нужный компьютер пользователя или анализировать собранную информацию. Что бы узнать guid контейнера в Active Directory можно воспользоваться программой Active Directory Explorer. Так же не забудьте пользователям выдать права на изменения нужных атрибутов компьютеров в соответствующем контейнере.

Когда компьютер не в домене то в планировщике задач, можно прописать следующий скрипт, чтобы информация о компьютере и пользователе сохранялась в виде ярлычка в сетевой папке. И затем использовать эти ярлычки чтобы одним кликом разбудить WOL пакетом нужный компьютер и подключится к нему через Помощник для оказания технической поддержки. Для отправки WOL пакета можно использовать утилиту Wake On Lan.

Когда компьютер не в домене, но есть административная учётная запись от всех компьютеров, можно выполнить следующий скрипт, чтобы загрузить из txt файла список компьютеров, получить о них информация по сети через WMI и создать аналогичные ярлычки в локальной папке.

Или можно сделать то же самое, что в предыдущем примере, но разбить всё на два этапа. Сначала получить данные с компьютеров по сети через WMI и сохранить их в локальной папке. А затем на основании этих данных создать аналогичные ярлычки в другой локальной папке.

env.search

Описание

JScript для поиска данных для переменных среды в объектах Active Directory по протоколу LDAP или в папке с ini файлами. Основная задача скрипта найти, добавить в переменные среды данные по компьютеру и используя эти переменные, выполнить необходимую команду в целях системного администрирования. Данные по компьютерам можно собрать с помощью другого скрипта env и выгрузить их в ini файлы в папке или добавить в атрибуты объектов Active Directory с помощью другого скрипта env.send.

Использование

— Режим поиска данных для переменных среды.

— Путь к папке или guid (допускается указание пустого значения).

— Дополнительные опции (может быть несколько, порядок не важен).

— Шаблоны для получения данных из атрибутов объекта (только для режима ldap ).

Поиск объектов

Переменные среды

Скрипт добавляет временные переменные в среду процесса. В режиме folder переменные добавляются по ключам в ini файле. В режиме ldap добавляются описанные ниже переменные. Если нет данных для формирования переменной, то переменная не создаётся. Если задана дополнительная опция user, то по ключам USR-NAME-FIRST и USR-NAME-SECOND дополнительно запрашиваются данные о пользователе. Применяя шаблоны для получения данных из атрибутов объекта, можно получить любые данные и добавить их в любые переменные. Причём данные из одного атрибута по шаблону можно разделить на несколько переменных.

Операционная система

Пользователь

Сетевой адаптер

Другие переменные

Примеры использования

Вывести предложение для ввода поискового запроса, номера компьютера и выбора последующего действия. Поиск осуществлять в Active Directory в пределах Organizational Unit c guid . Для отображаемой информации использовать оформление цветом, найденные компьютеры проверять на доступность и запрашивать информацию о пользователе. Что бы узнать guid контейнера в Active Directory можно воспользоваться программой Active Directory Explorer.

Вывести предложение для ввода поискового запроса, номера компьютера и выбора последующего действия. Поиск осуществлять в папке с ini файлами. Для отображаемой информации использовать оформление цветом.

Сохранить в файл список всех компьютеров расположенных в Active Directory в пределах Organizational Unit c guid .

Источник

Обнаружение сетевых устройств

Сканирование сети с построением списка устройств и их свойств, таких как перечень сетевых интерфейсов, с последующим снятием данных в системах мониторинга, если не вникать в происходящее, может показаться особой, компьютерной, магией. Как же это работает — под катом.

i4upz2hs 11sfk1k6wpwfoz29gs

Disclaimer
Автор не имеет профильного образования, связанного с администрированием сетей, поэтому наверняка имеются неточности и упомянуто не всё, что можно.

Обнаружение

Для обнаружения устройства, т.е. определения есть ли на выбранном ip-адресе что-либо, можно применить следующие методы:

Данные доступны по SNMP и telnet, и могут быть использованы при построении физической карты сети.

Сбор сведений

После того, как устройство обнаружено, можно переходить к сбору сведений о нем.
Используя ARP протокол, по ip можно получить MAC-адрес, а по нему вероятного производителя (часть оборудования допускает смену адреса, так что метод не очень надежен). Далее можно воспользоваться утилитой nmap, которая сканируя открытые порты, сверяется со своей базой отпечатков и делает предположение об используемой операционной системе, её версии и типе устройства.

Чтобы получить более подробные сведения по устройству потребуется один из следующих способов:

Для работы с SNMP можно использовать пакет утилит Net-SNMP. Чтобы получить, к примеру, описание устройства, надо указать версию протокола, пароль на чтение (community read, по умолчанию public) и адрес, в нотации SNMP называемый OID (object identificator) и состоящий из чисел и точек. Все адреса устройства можно представить в виде дерева, где адреса отсортированы в лексикографическом порядке. Протокол позволяет запросить текущее значение по адресу, а также адреса следующие за текущим.

Стандартный набор адресов весьма ограничен и содержит описание устройства, контакты, расположение и время работы (uptime). Остальные адреса зависят от производителя устройства и могут быть получены сканированием, например, утилитой snmpwalk. К счастью, Linux и Windows имеют типовые адреса для сетевых интерфейсов и загруженности процессоров/памяти, поэтому для них лишь знать (или уметь определить) используемую операционную систему.

Данные можно запрашивать, разумеется, только с Windows машин.

Также имеется консольная утилита wmic и ее Linux-порт

Как это работает на примере Zabbix

Как известно Zabbix может самостоятельно обнаруживать новые устройства в сети и автоматически опрашивать некоторые их параметры. Называется это — Low Level Discovery.

Обнаружение устройств задается правилами сетевого обнаружения, которые комбинируют перечисленные ранее методы обнаружения, определяют доступно ли устройство и какой шаблон к нему применить (обычно исследуется описание устройства). Шаблон содержит список свойств, которые можно получить с устройства, а также правила для обнаружения и создания новых, выполняемые по таймеру.

Источник

Поиск компьютера в сети по имени

paypal wmzpaypalemail

Zdes moget bit washa reklama

radio

3333

avatar20935 17

3333

avatar20935 17

NetView v2.76rus сканирует подсеть и выдает список работающих компов, при последующих запусках проверяет их доступность в сети.

В открывшеся окошечке (интерфес коммандной строки) набрать ping (имя компа или его IP adrees, в первом случае он нам покажет его IP adress и отправит четыре пакета для проверки связи, во втором просто проверит связь)

Эта команда работает и в интернете, наберите после ping имя сайта, и вы узнаеете на каком IP adress он расположен.

Чтобы успеть перписать IPшник, лучше так:

Win+R
cmd
ping ИМЯХОСТА

Так окно не закроется сразу, и будет видно.

Источник

Время на прочтение
5 мин

Количество просмотров 33K

Привет всем!
Работаю в компании. 1500+ активных пользователей.
Организован ХелпДеск, сотрудники регистрируют тикеты в системе, но, как-то так получается, что часть из юзеров забывают указывать имя пк, за которым они находятся.

Для выяснения этой информации (по телефону/email/экстрасенсорные способности) девочки из поддержки тратят драгоценное время, которое они могли бы уделить свежей чашке кофе или разговорам о новом платье (шутка). Наши сотрудники постоянно заняты своей непосредственной работой.

Идея (не инновация конечно) — писать данные о логонах пользователя в единую базу, а потом через веб оперативно искать нужную информацию.

image

Что у нас есть?

Windows среда (ХР/7/2003/2008), учетные записи хранятся в AD, все устройства работаю в локальной сети в качестве СУБД используем MSSQL 2005/2008R2.

Что мы хотим?

Поиск информации через веб интерфейс:

  1. Где логинился сотрудник с фамилией, например, «Иванов«;
  2. Кто логинился на устройстве, например, «PC34«;
  3. Где были совершены логоны под учетной записью, например, «hr.ivanov«.

Должна отображаться информация:

  • имя пк;
  • login;
  • фио;
  • ip адрес;
  • дата логона.

Название?

Так как «решением» будут пользоваться несколько человек (от 5 до 35 человек), надо как-то его обозвать для удобства. Нарекли мы его «SuperVisor».

Приступим к реализации

Как будем писать в БД?

Первое, что пришло в голову — это создать bat файл с sqlcmd, но для каждой версии Windows нужна своя версия утилиты sqlcmd. Неудобно, и мы не стали копать глубже.

Вторым решением было создать небольшой exe клиент, который при запуске будет собирать данные об имени доменной учетной записи, имени пк, ip адресе пк и после получения этой информации будет выполняться вставка данных в БД. Программу размещаем, например, в папке NETLOGON на контроллере домена и групповыми политиками распространяем на ПК/Сервера в локальной сети компании.

Программа на Delphi

unit Unit1;
interface
uses
  Windows,SysUtils, Variants, Classes, Forms,WinSock,
  Dialogs, DB, ADODB,StdCtrls,Messages, ExtCtrls;
type
  TForm1 = class(TForm)
    boston: TADOConnection;
    qryinsert: TADOQuery;
    timer: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure timerTimer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;

implementation

{$R *.dfm}
// версия 0.0.4
// дата 27-02-2014

function GetCurrentUserName: string;
 const
   cnMaxUserNameLen = 254;
 var
   sUserName: string;
   dwUserNameLen: DWORD;
 begin
   dwUserNameLen := cnMaxUserNameLen - 1;
   SetLength(sUserName, cnMaxUserNameLen);
   GetUserName(PChar(sUserName), dwUserNameLen);
   SetLength(sUserName, dwUserNameLen);
   Result := string(sUserName);
 end;

 function GetCurrentComputerName: string;
 const
   cnMaxComputerNameLen = 254;
 var
   sComputerName: string;
   dwComputerNameLen: DWORD;
 begin
   dwComputerNameLen := cnMaxComputerNameLen - 1;
   SetLength(sComputerName, cnMaxComputerNameLen);
   GetComputerName(PChar(sComputerName), dwComputerNameLen);
   SetLength(sComputerName, dwComputerNameLen);
   Result := string(sComputerName);
 end;

  function GetLocalIP: String;
  const WSVer = $101;
  var
    wsaData: TWSAData;
    P: PHostEnt;
    Buf: array [0..127] of Char;
  begin
    Result := '';
    if WSAStartup(WSVer, wsaData) = 0 then begin
      if GetHostName(@Buf, 128) = 0 then begin
        P := GetHostByName(@Buf);
        if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
      end;
      WSACleanup;
    end;
  end;


  procedure TForm1.FormCreate(Sender: TObject);
  begin
  try
    qryinsert.SQL.Text := 'begin TRANSACTION insertdata' +#13#10 +
    'insert into [supervisor].[user].[info_host](host,login,last_ip) values (:host,:login,:ip)'+#13#10 +
    'COMMIT TRANSACTION insertdata';
    qryinsert.Parameters.ParamByname('login').Value:= GetCurrentUserName ;
    qryinsert.Parameters.ParamByname('host').Value:= GetCurrentComputerName ;
    qryinsert.Parameters.ParamByname('ip').Value:= GetLocalIP ;
    qryinsert.ExecSQL;    
    timer.Enabled:=True;
    form1.timer.Interval:=1500;
  except    
    Application.Terminate;
  end
  end;

  procedure TForm1.timerTimer(Sender: TObject);
  begin
    ExitProcess(0);
  end;
end.

Дальше алгоритм такой:

  1. Пользователь логинится за пк;
  2. Скрытно запускается SuperVisor.exe;
  3. Делается попытка INSERT в указанную бд, если успешно, то программа завершает свою работу;
  4. Если выполнить INSERT не получается (ноутбук не в локальной сети, сервер бд недоступен и т.д), таймаут 15 секунд и процесс «убивается», не пугая пользователя страшными сообщениями и окнами.

Отлично, теперь создадим таблицы, в которых будут храниться данные

/* 

Главная таблица, в которую пишутся логоны
-----------------------------------------------------------
host - имя пк
login - имя доменной учетной записи
last_ip - ip адрес пк
createdate - дата создания записи
createdate_unix - unix время, дата создания записи
------------------------------------------------------------

*/

CREATE TABLE [user].[info_host](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[host] [nvarchar](128) NULL,
	[login] [nvarchar](128) NULL,
	[createdate] [datetime] NOT NULL,
	[createdate_unix] [int] NOT NULL,
	[last_ip] [nvarchar](20) NULL
) ON [supervisor]

GO

ALTER TABLE [user].[info_host] ADD  DEFAULT (getdate()) FOR [createdate]
GO

ALTER TABLE [user].[info_host] ADD  DEFAULT (datediff(second,'1970-01-01 00:00:00',getutcdate())) FOR [createdate_unix]

/*

Таблица справочник с ФИО учетных записей, наполняется из АД. Синхронизация происходит один раз в сутки
------------------------------------------------------------
login - имя доменной учетной записи
displayName - поле displayname из АД для учетной записи 
createdate - дата создания записи
createdate_unix - unix время, дата создания записи
------------------------------------------------------------

*/

CREATE TABLE [user].[info_login_card](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[login] [nvarchar](128) NULL,
	[createdate] [datetime] NOT NULL,
	[createdate_unix] [int] NOT NULL,
	[displayName] [nvarchar](256) NULL
) ON [supervisor]

GO

ALTER TABLE [user].[info_login_card] ADD  DEFAULT (getdate()) FOR [createdate]
GO

ALTER TABLE [user].[info_login_card] ADD  DEFAULT (datediff(second,'1970-01-01 00:00:00',getutcdate())) FOR [createdate_unix]
GO

Таблицы созданы и наполняются данными. Забыл написать, что сервер БД у нас виртуальный и работает под Windows Server 2003R2, СУБД MSSQL 2008R2. Сервер приложения виртуальный, Windows 2003R2, Apache 2.2 + PHP 5.2

Следующий шаг — создание веб интерфейса для того, чтобы системные администраторы и сотрудники хелпдеска могли комфортно работать с сервисом. Во внутренних разработках, для экономии времени, я использую фреймфорк Bootstrap. Главная страница, до того как начинают вводить данные в поисковую строку, выглядит так:

image

В строку поиска можно ввести фамилию сотрудника/учетную запись(логин) или имя компьютера:

image

Причем, не обязательно вводить полностью фамилию и имя сотрудника/логин/имя пк, поиск совпадений в БД осуществляется с помощью оператора LIKE ( пример …LIKE ‘ива%’), запросы выполняются асинхронно, результат поиска обновляется перед глазами сотрудника без перезагрузки страницы после ввода нового символа в строку поиска.

запрос к бд для поиска по ФИО

               set rowcount $limit
                      SELECT
                           a.[id]
                          ,a.[host]
                          ,a.[login]
                          ,a.[createdate]
                          ,a.[createdate_unix]
                          ,a.[last_ip]
                          ,b.[displayName]
                      FROM [user].[info_host] a
                     left join [user].[info_login_card] b on a.login = b.login
                      where b.displayName like ('$ihostlogin')
                      order by a.[createdate_unix] desc
                        set rowcount 0

запрос к бд для поиска по имени пк

                      set rowcount $limit
                      SELECT
                           a.[id]
                          ,a.[host]
                          ,a.[login]
                          ,a.[createdate]
                          ,a.[createdate_unix]
                          ,a.[last_ip]
                          ,b.[displayName]
                      FROM [user].[info_host] a
                     left join [user].[info_login_card] b on a.login = b.login
                      where a.host like ('$hostlogin')
                      order by a.[createdate_unix] desc
                        set rowcount 0

поиск по логину

set rowcount $limit
                      SELECT
                           a.[id]
                          ,a.[host]
                          ,a.[login]
                          ,a.[createdate]
                          ,a.[createdate_unix]
                          ,a.[last_ip]
                          ,b.[displayName]
                      FROM [user].[info_host] a
                     left join [user].[info_login_card] b on a.login = b.login
                      where a.login like ('$hostlogin')
                      order by a.[createdate_unix] desc
                        set rowcount 0

«Супервизор» работает у нас в компании около года, со своей главной задачей справляется отлично. Тикеты теперь берутся в работу оперативнее, сотрудникам не нужно тратить время на уточнение дополнительной информации для того, чтобы преступить к решению заявки.

Данное решение по определению имени компьютера получилось современным и удобным, на мой взгляд.

Успехов в работе!

Полезные ссылки

Установка Apache2.2 и PHP-5;
Подключение MS SQL к PHP 5.3 и выше.

If you want to know the port number of your local host on which Mysql is running you can use this query on MySQL Command line client —

SHOW VARIABLES WHERE Variable_name = 'port';


mysql> SHOW VARIABLES WHERE Variable_name = 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
1 row in set (0.00 sec)

It will give you the port number on which MySQL is running.


If you want to know the hostname of your Mysql you can use this query on MySQL Command line client —

SHOW VARIABLES WHERE Variable_name = 'hostname';


mysql> SHOW VARIABLES WHERE Variable_name = 'hostname';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| hostname          | Dell  |
+-------------------+-------+
1 row in set (0.00 sec)

It will give you the hostname for mysql.


If you want to know the username of your Mysql you can use this query on MySQL Command line client —

select user();   


mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

It will give you the username for mysql.

Довольно часто администратору нужно быстро узнать имя пользователя, который выполнил вход на удаленном компьютере Windows. В это статье мы рассмотрим несколько утилит и PowerShell скриптов, которые помогут вам узнать имена пользователей, залогиненых на удаленных компьютерах в сети.

Содержание:

  • Утилиты PSLoggedOn и Qwinsta
  • Получаем имя пользователя на удаленном компьютере через PowerShell
  • PowerShell скрипт для проверки пользователей на удаленных компьютерах

Утилиты PSLoggedOn и Qwinsta

В комплекте утилит SysInternals PSTools от Microsoft есть консольная утилита PSLoggedOn.exe, которую можно использовать для получения имени пользователя, который вошел на удаленный компьютер, а также список подключенных к нему SMB сеансов.

Скачайте утилиту и запустите ее в формате:

psloggedon \RemoteCompName

утилита PSLoggedOn

Как вы видите, утилита вернула имя залогиненного пользователя (Users logged on locally), а также список пользователей, которые по сети используют ресурсы с этого компьютера (Users logged on via resource shares).

Если нужно получить только имя пользователя, вошедшего локально, используйте опцию –l:

Psloggedon.exe \wks215s1 –l

Утилита Psloggedon подключается к реестру и проверяет в нем имя пользователя, вошедшего локально. Для этого должна быть включена служба RemoteRegistry. Вы можете запустить ее и настроить автозапуск службы с помощью PowerShell:

Set-Service RemoteRegistry –startuptype automatic –passthru
Start-Service RemoteRegistry

Также можно получить список сессий на удаленном компьютере с помощью встроенной утилиты
qwinsta
. Эта утилита должна быть знакома любому администратору, управляющему терминальными серверами с Remote Desktop Services. Чтобы получить список сессий с удаленного компьютера, выполнит команду:

qwinsta /server:dc01

qwinsta - список сессий пользователей на компьютере

Утилита возвращает список всех сессий (активных и отключенных по таймауту) на RDS сервере или десктопной редакции Windows 10 (даже если вы разрешили к ней множественные RDP подключения).

Если при подключении к удаленному серверу через qwinsta вы получаете ошибку Error 5 Access Denied, проверьте что на удаленном компьютере разрешено удаленное управление пользователями через RPC. Включите, если нужно через реестр следующей командой или через GPO:

reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v "AllowRemoteRPC" /t "REG_DWORD" /d "1" /f

Получаем имя пользователя на удаленном компьютере через PowerShell

Вы можете получить имя пользователя, который залогинен на компьютере через WMI класс Win32_ComputerSystem. Откройте консоль PowerShell и выполните команду:

Get-WmiObject -class Win32_ComputerSystem | Format-List Username

Команда вернула имя пользователя, который выполнил вход на компьютер.

Get-WmiObject -class Win32_ComputerSystem Username

У командлета Get-WmiObject есть параметр –ComputerName, который можно использовать для получения доступа к WMI объектам на удаленном компьютере. Следующая команда вернет имя пользователя с удаленного компьютера:

(Get-WmiObject -class Win32_ComputerSystem –ComputerName wks215s1).Username

Get-WmiObject ComputerName Username имя пользователя с удаленного компьютера windows

Данная команда показывает только пользователя, вошедшего на консоль (не через RDP).

Также для получения информации с удаленных компьютеров можно использовать PSRemoting с помощью командлета Invoke-Command.

Если нужно получить только имя пользователя на компьютере (без домена), воспользуетесь следующими командами:

$userinfo = Get-WmiObject -ComputerName 'wks215s1' -Class Win32_ComputerSystem
$user = $userinfo.UserName -split '\'
$user[1]

powershell скрипт вывести имя пользователя с удаленного компьютера

В современных версиях PowerShell Core (pwsh.exe) вместо Get-WmiObject нужно использовать CIM командлет Get-CimInstance:

Get-CimInstance –ComputerName wks215s1 –ClassName Win32_ComputerSystem | Select-Object UserName

Или

(Get-CimInstance -ComputerName wks215s1 -ClassName Win32_ComputerSystem).CimInstanceProperties | where{$_.Name -like "UserName"}| select value

Get-CimInstance узнать имя пользователя с удаленного компьютера

GetCiminstance использует WinRM для подключения к удаленным компьютерам, поэтому на них нужно включить и настроить WinRM через GPO или командой:

WinRM quickconfig

PowerShell скрипт для проверки пользователей на удаленных компьютерах

Если вам нужно собрать информацию о пользователях сразу с нескольких компьютерах, можете использовать следующую PowerShell функцию получить имена пользователей.

function Get-LoggedUser
{
    [CmdletBinding()]
    param
    (
        [string[]]$ComputerName 
    )
    foreach ($comp in $ComputerName)
    {
        $output = @{'Computer' = $comp }
        $output.UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp).UserName
  [PSCustomObject]$output
    }
}

На вход функции Get-LoggedUser нужно передать имена компьютеров, на которых нужно проверить имена пользователей:

Get-LoggedUser wks215s1,wks215s2,dc01

Get-LoggedUser - powershell скрипт для получения имени залогиненых пользователей

Если для какого-то компьютера функция вернула пустое имя пользователя, значит на компьютер никто не залогинен.

Можно получить имена пользователей, которые работают на компьютерах в домене Active Directory. Для получения списка компьютеров нужно использовать командлет Get-ADComputer. В следующем примере мы получим имена пользователей, которые работают за активными компьютерами в определенном OU домена. Чтобы скрипт работал быстрее перед тем, как обратится к обратится к удаленному компьютеру, я добавил проверку его доступности по сети через ICMP пинг с помощью командлета Test-NetConnection:

function Get-LoggedUser
{
    [CmdletBinding()]
    param
    (
        [string[]]$ComputerName 
    )
    foreach ($comp in $ComputerName)
    {
        if ((Test-NetConnection $comp -WarningAction SilentlyContinue).PingSucceeded -eq $true) 
            {  
                $output = @{'Computer' = $comp }
                $output.UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp).UserName
            }
            else
            {
                $output = @{'Computer' = $comp }
                         $output.UserName = "offline"
            }
         [PSCustomObject]$output 
    }
}
$computers = (Get-AdComputer -Filter {enabled -eq "true"} -SearchBase 'OU=Kazan,DC=winitpro,DC=loc').Name
Get-LoggedUser $computers |ft -AutoSize

powershell скрипт получить информацию по пользователей с компьютеров в домене active directory

Также обратите внимание, что вы можете хранить в свойствах компьютеров в AD имя пользователя, который выполнил вход. Для этого можно использовать логон скрипт, описанный в статье “Set-ADComputer: добавляем информацию о пользователе в свойства компьютеров AD”

После этого вам не нужно сканировать все компьютеры, чтобы найти где залогинен определенный пользователь. Можно найти компьютер пользователя простым запросом к Active Directory:

$user='dvpetrov'
$user_cn=(get-aduser $user -properties *).DistinguishedName
Get-ADComputer -Filter "ManagedBy -eq '$user_cn'" -properties *|select name,description,managedBy|ft

Понравилась статья? Поделить с друзьями:
  • Яндекс на планшете стал узким как исправить
  • Как составить факторную модель зависимости
  • Как найти старого железного короля
  • Как найти расстояние по формуле напряженности
  • Как найти плей маркет на ноутбуке