pubkey/ldap_pubkey.go

37 lines
851 B
Go

package main
import (
"fmt"
"github.com/go-ldap/ldap"
"os"
)
func main() {
var ldap_uri string = os.Args[1]
var ldap_bind_dn string = os.Args[2]
var ldap_bind_pw string = os.Args[3]
var ldap_base_dn string = os.Args[4]
var uid string = os.Args[5]
l, err := ldap.DialURL(ldap_uri)
if err != nil {
panic(err)
}
defer l.Close()
err = l.Bind(ldap_bind_dn, ldap_bind_pw)
if err != nil {
panic(err)
}
search_request := ldap.NewSearchRequest(ldap_base_dn, ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false, fmt.Sprintf("(&(objectClass=posixAccount)(uid=%s))", uid), []string{"dn", "sshPublicKey"}, nil)
sr, err := l.Search(search_request)
if err != nil {
panic(err)
}
for _, entry := range(sr.Entries) {
fmt.Printf("%v", entry.GetAttributeValue("sshPublicKey"))
}
}