Как получить список всех компьютеров в указанном диапазоне из Active Directory?

Каким образом можно использовать Python для вывода имен компьютеров и версий операционных систем из Active Directory в заданном диапазоне IP-адресов от 10.62.39.1 до 10.62.39.12?
  • 13 июня 2024 г. 17:11
Ответы на вопрос 2
Для получения списка всех компьютеров в указанном диапазоне из Active Directory можно воспользоваться модулем `python-ldap`. 

Пример кода на Python, который выводит имена компьютеров и версии операционных систем из Active Directory в заданном диапазоне IP-адресов от 10.62.39.1 до 10.62.39.12:

```python
import ldap

ldap_server = "ldap://your_ldap_server_address"
base_dn = "DC=yourdomain,DC=com"
search_filter = "(objectClass=computer)"
ip_range = range(1, 13)    # заданный диапазон IP-адресов

con = ldap.initialize(ldap_server)
con.simple_bind_s()

for i in ip_range:
    ip_address = f"10.62.39.{i}"
    search_filter_ip = f"(&(objectClass=computer)(dNSHostName=*.{ip_address}))"

    result = con.search_s(base_dn, ldap.SCOPE_SUBTREE, search_filter_ip)
    for dn, entry in result:
        computer_name = entry.get('sAMAccountName')[0].decode('utf-8')
        os_version = entry.get('operatingSystemVersion')[0].decode('utf-8')
        print(f"Computer Name: {computer_name}, OS Version: {os_version}")

con.unbind()
```

Пожалуйста, убедитесь, что у вас есть доступ к Active Directory и установлен модуль `python-ldap`. Подставьте свои настройки LDAP-сервера и домена в код.
Лучше использовать для этого штатные утилиты командной строки или скрипт powershell (код будет проще), например <br/> <pre><code class="vbscript">$ip = "192.168.1.1"

# получить dns имя по ip
[System.Net.Dns]::GetHostEntry($ip).HostName

# получить операционную систему по ip
# права у текущего пользователя должны быть достаточными
$creds = Get-Credential

Invoke-Command -ComputerName $ip -Credential $creds {
    Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, Version
}</code></pre> <br/> p.s. по уму wmi есть и для python но код точно будет многословным (попроси chatgpt он тебе нарисует или нагугли) <br/> p.s. <br/> <a href="https://pypi.org/project/wmi-client-wrapper/" rel="nofollow">wmi</a> <br/> или <a href="https://github.com/deanbunn/MS-AD-LDAP3-Python/blob/master/ms_ad_search_examples.py#L156" rel="nofollow">ldap3</a>
Похожие вопросы