要查询域中的用户组列表,您可以使用 Golang 的 ldap 包。以下是一个示例代码,它连接到域控制器并列出所有用户组:

package main

import (
    "fmt"
    "gopkg.in/ldap.v3"
    "log"
)

func main() {
    // 设置 LDAP 连接
    l, err := ldap.Dial("tcp", "your.domain.controller:389")
    if err != nil {
        log.Fatalf("Failed to connect to LDAP server: %s", err.Error())
    }
    defer l.Close()

    // 使用服务账户绑定到 LDAP
    err = l.Bind("service-account@your.domain", "password")
    if err != nil {
        log.Fatalf("Failed to bind to LDAP server: %s", err.Error())
    }

    // 搜索所有组
    searchRequest := ldap.NewSearchRequest(
        "dc=your,dc=domain",
        ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
        "(objectClass=group)",
        []string{"cn"},
        nil,
    )
    sr, err := l.Search(searchRequest)
    if err != nil {
        log.Fatalf("Failed to search for groups: %s", err.Error())
    }

    // 打印用户组列表
    fmt.Println("Groups:")
    for _, entry := range sr.Entries {
        fmt.Printf("- %s\n", entry.GetAttributeValue("cn"))
    }
}

请注意,您需要将 'your.domain.controller' 和 'your.domain' 替换为您的域控制器的名称和域名。您还需要使用服务帐户凭据替换 'service-account@your.domain' 和 'password'。

Golang 查询域用户组列表 - 代码示例

原文地址: https://www.cveoy.top/t/topic/koB7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录