- 论坛徽章:
- 0
|
我在windows2003上搭建了一个AD,在Linux下使用如下命令:
- ldapsearch -x -W -D "cn=test,cn=users,dc=test,dc=test2,dc=com" -b "cn=users,dc=test,dc=test2,dc=com" -h 192.168.1.100 "cn=haha"
复制代码
可以得到haha用户的信息。我写了一个测试程序,为什么会出错呢?
- #include <ldap.h>
-
- main()
- {
- LDAP *ld;
- LDAPMessage *res, *e;
- int i;
- char *a, *dn;
- void *ptr;
- char **vals;
-
- if ( (ld = ldap_open( "192.168.1.100", LDAP_PORT ))
- == NULL )
- exit( 1 );
-
- if ( ldap_simple_bind_s( ld, "cn=haha,cn=users,dc=test,dc=test2,dc=com", "123$%^aaaAAA") != LDAP_SUCCESS ) {
- ldap_perror( ld, "ldap_simple_bind_s" );
- exit( 1 );
- }
-
- if ( ldap_search_s( ld, "o=test.test2, c=com",
- LDAP_SCOPE_SUBTREE, "(cn=haha)", NULL, 0, &res )
- != LDAP_SUCCESS ) {
- ldap_perror( ld, "ldap_search_s" );
- exit( 1 );
- }
-
- for ( e = ldap_first_entry( ld, res ); e != NULL;
- e = ldap_next_entry( ld, e ) ) {
- dn = ldap_get_dn( ld, e );
- printf( "dn: %s", dn );
- free( dn );
-
- for ( a = ldap_first_attribute( ld, e, &ptr );
- a != NULL;
- a = ldap_next_attribute( ld, e, ptr ) ) {
- printf( "attribute: %s", a );
-
- vals = ldap_get_values( ld, e, a );
- for ( i = 0; vals[i] != NULL; i++ ) {
- printf( "value: %s", vals[i] );
- }
- ldap_value_free( vals );
- }
- }
- ldap_msgfree( res );
-
- ldap_unbind( ld );
- }
复制代码
执行结果如下:
- ldap_search_s: Operations error (1)
- additional info: 000020D6: SvcErr: DSID-031006CC, problem 5012 (DIR_ERROR), data 0
复制代码
[ 本帖最后由 苦中作乐 于 2007-8-14 20:12 编辑 ] |
|