Ad Widget

Collapse

vbscript, ADSystemInfo, zabbix_get

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Zholaman
    Member
    • Jul 2015
    • 61

    #1

    vbscript, ADSystemInfo, zabbix_get

    Привет,

    проблема следующая. Написал следующий vbscript:
    Code:
    On Error Resume Next
    
    Set objSysInfo = CreateObject("ADSystemInfo")
      strUser = objSysInfo.UserName
    
    Set objUser = GetObject("LDAP://" & strUser)
      strUserName = objUser.displayName
      strSam  = objUser.sAMAccountName
    
    WScript.Echo "Login: " & strUserName
    Который возвращает имя текущего AD пользователя. При запуске с командной строки (на стороне клиентской машины), скрипт показывает имя пользователя нормально, но при попытке просмотра параметра через zabbix_get, имя пользователя, Zabbix агент то ли не передает или передает пустые символы или же Zabbix сервер не корректно принимает данные (мне не понятно что происходит).

    Вот команда которой я просматриваю переданные данные (параметр - username):
    Code:
    zabbix_get -s 192.168.0.101 -k username
    где
    192.168.0.101 - IP адрес клиентской машины,
    username - имя item-а.

    При этом слово "Login: " передается на сервер с которого запускаю zabbix_get, без каких либо проблем. Т.е. после запуска выше указанной команды, в ответ я получаю: 'Login: '

    Я пробовал возвращать с vbscript переменную strUserName в разных кодировках (также конвертировал сам файл скрипта в разные кодировки), но агент/сервер, все равно упорно не передают/видят strUserName.

    Помогите пожалуйста с этой проблемой, может кто уже встречался с этим ?!
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Командой zabbix_get Вы обращаетесь к агенту Zabbix. А он, как правило, на Windows-машинах работает как системная служба (Windows service) от имени системного пользователя (Local System Account). Ему недоступен контекст сессии того пользователя, который сейчас залогинен, он о нём ничего не знает.

    Comment

    • Zholaman
      Member
      • Jul 2015
      • 61

      #3
      Originally posted by Kos
      Командой zabbix_get Вы обращаетесь к агенту Zabbix. А он, как правило, на Windows-машинах работает как системная служба (Windows service) от имени системного пользователя (Local System Account). Ему недоступен контекст сессии того пользователя, который сейчас залогинен, он о нём ничего не знает.
      Спасибо, а я почти 1,5 дня потерял преобразовывая строку в различные кодировки. А про контекст пользователя даже и не подумал, спасибо огромное!

      Теперь хотя бы ясно куда копать, буду искать код как получить текущего пользователя из-под Local System Account, или еще что нибудь придумаю.

      Comment

      • Zholaman
        Member
        • Jul 2015
        • 61

        #4
        Для тех кто столкнулся с подобной задачей.

        Вот скрипт который показывает авторизированного на локальном компе пользователя:
        Code:
        On Error Resume Next
        
        Dim WSHShell, RegKey, Username
        Set WSHShell = CreateObject("WScript.Shell")
        RegKey = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\"
        Username = WSHShell.RegRead(RegKey & "LastLoggedOnSAMUser")
        Username = Mid(Username,8) 
        WScript.echo Username
        Задача решена.
        Last edited by Zholaman; 28-03-2017, 16:43.

        Comment

        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3404

          #5
          Code:
          Username = Mid(Username,8)
          Я так понимаю, что восьмёрка в данном случае - это длина Вашего имени домена вместе с разделителем? Т.е. у других это значение может отличаться?

          Comment

          • Zholaman
            Member
            • Jul 2015
            • 61

            #6
            Originally posted by kos
            Code:
            username = mid(username,8)
            Я так понимаю, что восьмёрка в данном случае - это длина Вашего имени домена вместе с разделителем? Т.е. у других это значение может отличаться?
            Вы верно подметили, это длина имени нашего домена. И да, у других она может отличаться.

            Comment

            Working...