LDAP操作例子

 查询的
#include "ldap.h"
#include "stdio.h"
int main()
{
  LDAP  *ld;
  LDAPMessage *res,*e;
  int i,version;
  char *server;
  int *port;
  char *dn;
  char *a;
  BerElement *ptr;
  char **vals;
  char **ppValue = NULL;
  char *sdn;
  server="192.168.1.17";
  port = 389;
  //联接服务器
  if( (ld = ldap_open(server, port ))  == NULL )
   {
        printf("NO CONNECT";
        exit( 1 );
   }
   //设置服务器版本
   version = LDAP_VERSION3;
   ldap_set_option( ld, LDAP_OPT_PROTOCOL_VERSION,&version);
   //绑定服务器
   if(ldap_simple_bind_s(ld,"cn=root,dc=starxing,dc=com","secret"!=LDAP_SUCCESS)
   {
     ldap_perror( ld, "ldap_simple_bind_s" );
     exit( 1 );
   }
   //设置查询的根目录
   sdn="dc=starxing,dc=com";
   //进行同步查询
  if (ldap_search_s(ld,sdn,LDAP_SCOPE_SUBTREE,"(objectclass=*)",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
    dn=ldap_get_dn(ld,e);
    printf("dn: %s /n",dn);
    ldap_memfree( dn );
        //对条目的属性进行逐条分析
     for ( a = ldap_first_attribute( ld, e, &ptr );a != NULL;a = ldap_next_attribute( ld, e, ptr ) )
      {
         printf( "   %s:  ",a );
          vals = ldap_get_values( ld, e, a );
              for ( i = 0; vals != NULL; i++ ) {
                 printf(" %s ",vals);
                                }
                printf("/n";
          ldap_value_free( vals );
      }
      printf("/n";
  }
    ldap_msgfree(res);
    ldap_unbind(ld);
}
插入的
#include "ldap.h"
#include "stdio.h"


int main()
{
  LDAP  *ld;
  char *sdn = "cn=qqq11,dc=starxing,dc=com";//要添加条目的DN
  //列出要添加条目各个属性的值
  char *cn_values[] = {"qqq11",NULL};
  char *sn_values[] = {"qqq11",NULL};
  char *userPassword_values[] = {"qqqq",NULL};
  char *objectClass_values[] = {"person",NULL};
  int  version;
  LDAPMod mod2 = {LDAP_MOD_ADD,"cn",cn_values};
  LDAPMod mod1 = {LDAP_MOD_ADD,"sn",sn_values};
  LDAPMod mod0 = {LDAP_MOD_ADD,"objectClass",objectClass_values};
  LDAPMod mod3 = {LDAP_MOD_ADD,"userPassword",userPassword_values};
  LDAPMod *lmod[] = {&mod0,&mod1,&mod2,&mod3,NULL};
  //联接ldap服务器
  if( (ld = ldap_open( "192.168.1.17", 389 ))  == NULL ){
      ldap_perror(ld,"ldapopen";
          exit( 1 );
          return 1;
  }
  //设置ldap版本
  version = LDAP_VERSION3;
  ldap_set_option( ld, LDAP_OPT_PROTOCOL_VERSION,&version);
  //对ldap服务器进行绑定
  if(ldap_simple_bind_s(ld,"cn=root,dc=starxing,dc=com","secret"!=LDAP_SUCCESS)
  {
    ldap_perror( ld, "ldap_simple_bind_s" );
        exit( 1 );
        return 1;
   }
   //进行同步绑定
   if(ldap_add_s(ld,sdn,lmod)!=LDAP_SUCCESS){
    ldap_perror(ld,"ldap_add_s error";
    return( 1 );
   }
   ldap_unbind(ld);
   return( 0 );
}
删除的
#include "ldap.h"
#include "stdio.h"


int main()
{
  LDAP  *ld;
  int version;
  char **ppValue = NULL;
  //联接和绑定服务器
   if( (ld = ldap_open( "192.168.1.17", 389 ))  == NULL )
        exit( 1 );
   version = LDAP_VERSION3;

   ldap_set_option( ld, LDAP_OPT_PROTOCOL_VERSION,&version);
   if(ldap_simple_bind_s(ld,"cn=root,dc=starxing,dc=com","secret"!=LDAP_SUCCESS)
   {
     ldap_perror( ld, "ldap_simple_bind_s" );
     exit( 1 );
   }
   //进行删除操作
   if( ldap_delete_s(ld,"cn=qqq11,dc=starxing,dc=com" == -1)
   {
       ldap_perror(ld,"ldap_delete_s");
       exit(1);        
   }
  ldap_unbind(ld);
  return 0;
}
修改的
#include "ldap.h"
#include <stdio.h>;

int main()
{
  LDAP  *ld;
  char *sdn;
  //设置要更改的值
  char *sn_values[] = {"eeee",NULL};
  char *homePhone_values[] = {"12345678",NULL};
  int version;

  LDAPMod mod1 = {LDAP_MOD_ADD,"homePhome",homePhone_values};
  LDAPMod mod2 = {LDAP_MOD_REPLACE,"sn",sn_values};
  LDAPMod mod3 = {LDAP_MOD_DELETE,"mail",NULL};
  LDAPMod *lmod[4] = {&mod1,&mod2,&mod3,NULL};
  //联接服务器和绑定服务器
   if( (ld = ldap_open( "192.168.1.17", 389 ))  == NULL )
        exit( 1 );
   version = LDAP_VERSION3;

   ldap_set_option( ld, LDAP_OPT_PROTOCOL_VERSION,&version);
   if(ldap_simple_bind_s(ld,"cn=root,dc=starxing,dc=com","secret")!=LDAP_SUCCESS)
   {
     ldap_perror( ld, "ldap_simple_bind_s" );
     exit( 1 );
   }
   sdn = "cn=qqq11222,dc=starxing,dc=com";
   //进行更改
   if (ldap_modify_s(ld,sdn,lmod)!=LDAP_SUCCESS) {
     ldap_perror( ld, "ldap_modify_s" );
     return( 1 );
    }
ldap_unbind(ld);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值