Re: LDAP be killing me. I need a good step by step

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ric Moore escribío:
On Tue, 2008-01-08 at 13:30 +0800, Ed Greshko wrote:
Ric Moore wrote:
>From the examples I've found, there seems to be "just something
missing"(tm) in them. Someone please direct me to "something that just
works."(tm) as it's making me blind, crazy, old and cranky. Ric
Maybe you could start by tell folks what you need/want? I think your request is way to general. I know you are blind, crazy, and cranky...but stop and think for a moment.


Just a really good tried and true website reference for setting up ldap.
I've googled, went to various sites which all are a bit different from
each other, in procedure, and none has resulted in a working ldap
server. Even after trying to mentally diff them and come up with
something in the middle. Ergo, my appeal is to someone/anyone that has
used a webpage reference that works, step by step, I'd dearly love to
have it. I'm trying to use openldap. I thought sendmail was difficult.
It's a cakewalk compared to ldap/openldap. :) Ric


Rick. There really is not much out there. Here is a simple way of setting up the ldap. The configuration of the server is pretty well documented, but I always found setting up the database to be a bit difficult.

This is ONE way to skin the cat.  There are many ways.  This worked for me.

I have a file of names, phone numbers, etc. that has the following format that is used at my work:
Name|Email|Ext.|Home #|Cellular #|Pager|Title

sample data:

Baker, Steve B.|sbb|15|314-215-4141|314-591-8181|| Director of Technology
Bowland, Chris|cyb|33|314-835-1216||314-663-3132|Java Developer



I wrote a perl script to parse this and put it into a valid ldif format:

#!/usr/bin/perl

#Here it checks if there are 3 command line arguments.
if (scalar(@ARGV) < 3)
	#Next print the usage if the command line arguments are < 3
	{
		print "Usage: ascii2ldif {asciifile} {organization name} {emaildomain}\n";
		print "Example: ascii2ldif phonelist \"ace.com\"\n";
		print "\nThis will create a ldif file with the same name of the asciifile.\n";
		print "The email domain, is the emaildomain name of your organization.\n";
		print "\nFormat of entries:.\n";
		print "Lastname, Firstname|userid|Ext.|Home Phone|Cellular|Pager|Title\n";
		exit 1;
	}

my $debug=0;

#This is the variable for the 1st command line arg. (filename of asciifile)
my $phonelist = shift (@ARGV);
print "phonelist=$phonelist\n" if $debug;

#This is the variable for creating the .ldif file
my $ldiflist = ">".$phonelist.".ldif";
print "=\n" if $debug;

#This is the variable for the 2rd command line arg. (Name of email domain)
my $orgName = shift (@ARGV);
print "=\n" if $debug;
#This is the variable for the 3rd command line arg. (Name of email domain)
my $emaildomain = shift (@ARGV);
print "=\n" if $debug;
#This is the variable for the Organization name and type of org)
my ($org, $orgType) = split(/\./,$emaildomain);
print "=\n" if $debug;

sub print_header {
	#This prints the top of the tree of format:
	#dn: dc=ec-group,dc=com
	#dc: ec-group
	#o: Enterprise Consulting Group
	#objectClass: top
	#objectclass: organization
	#objectClass: dcObject

    print OUT "dn: dc=$org, dc=$orgType\n";
    print OUT "dc: $org\n";
    print OUT "o: $orgName\n";
    print OUT "objectClass: top\n";
    print OUT "objectclass: organization\n";
    print OUT "objectclass: dcObject\n\n";
}

sub print_entry {
my($givenName,$surName,$uid,$title,$officeNumber,$homeNumber,$mobil,$pager) = @_;

	# This creates an entry of format:
	#
	#dn: cn=Bill Ackermann, dc=ace, dc=com
	#cn: Bill Ackermann
	#sn: Ackermann
	#givenName: Bill
	#mail: wackerma@xxxxxxx
	#title: Systems Engineer
	#homeTelephoneNumber: 1.212.836.4886
	#telephoneNumber: 1.212.836.4886
	#mobileTelephoneNumber: 1.212.836.4886
	#pagerTelephoneNumber: 1.212.836.4886
	#objectclass: top
	#objectclass: person
	#objectclass: organizationalPerson
	#objectclass: inetOrgPerson
	#

	$cn = $givenName." ".$surName;
    print OUT "dn: cn=$cn, dc=$org, dc=$orgType\n";
    print OUT "cn: $cn\n";
    print OUT "sn: $surName\n";
    print OUT "givenName: $givenName\n" if $givenName ne "";
    print OUT "initials: $initials\n" if $initials ne "";
    print OUT "mail: $uid\@$emaildomain\n" if $uid ne "";
    print OUT "title: $title\n" if $title ne "";
    print OUT "telephoneNumber: $officeNumber\n" if $officeNumber ne "";
    print OUT "homeTelephoneNumber: $homeNumber\n" if $homeNumber ne "";
    print OUT "mobileTelephoneNumber: $mobil\n" if $mobil ne "";
    print OUT "pagerTelephoneNumber: $pager\n" if $pager ne "";
    print OUT "objectClass: top\n";
    print OUT "objectClass: person\n";
    print OUT "objectClass: organizationalPerson\n";
    print OUT "objectClass: inetOrgPerson\n\n";
}


my($given, $surname, $initials, $email, $telephone, $home, $mobil, $pager, $title);
$given = $surname = $initials = $email = "";
$telephone = $home = $mobil = $pager = $title = "";

open(ENTRY, $phonelist);
# better be this form: Name|Email|Ext.|Home #|Cellular  |Pager|Title
open(OUT, $ldiflist);

print_header;

while (<ENTRY>) {
	chomp;
	if ( $_ =~ /^\s*$/ ) {
	    next;					#ignore blank lines
	}
	($initials,$email,$telephone,$home,$mobil,$pager,$title) = split /\|/;
	($surname, $given) = split(/,/,$initials);
	$given =~ s/^\s*|\s*$//g;
	$surname =~ s/^\s*|\s*$//g;
	$email =~ s/^\s*|\s*$//g;
	$title =~ s/^\s*|\s*$//g;
	$telephone =~ s/^\s*|\s*$//g;
	$home =~ s/^\s*|\s*$//g;
	$mobil =~ s/^\s*|\s*$//g;
	$pager =~ s/^\s*|\s*$//g;

printf "given=%s,surname=%s,email=%s,title=%s,telephone=%s,home=%s,mobil=%s,pager=%s\n",
		$given,$surname,$email,$title,$telephone,$home,$mobil,$pager
			if $debug;
	
	print_entry($given,$surname,$email,$title,$telephone,$home,$mobil,$pager);
}

close(ENTRY);
close(OUT);
exit;

So when I run it as:

ascii2ldif phoneList "Enterprise Consulting Group" "ec-group.com"

I get a phoneList.ldif that looks like:
dn: dc=ec-group, dc=com
dc: ec-group
o: Enterprise Consulting Group
description: Top level LDAP for EC-GROUP.COM
objectClass: top
objectclass: organization
objectclass: dcObject

dn: ou=group,dc=ec-group,dc=com
ou: group
objectClass: top
objectClass: organizationalUnit

dn: ou=people,dc=ec-group,dc=com
ou: people
objectClass: top
objectClass: organizationalUnit

dn: ou=sales,dc=ec-group,dc=com
ou: sales
objectClass: top
objectClass: organizationalUnit

dn: cn=Steve B. Baker, ou=people, dc=ec-group, dc=com
cn: Steve B. Baker
sn: Baker
givenName: Steve B.
mail: sbb@xxxxxxxxxxxx
telephoneNumber: 15
homeTelephoneNumber: 314-215-4141
mobileTelephoneNumber: 314-591-8181
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson

dn: cn=Chris Bowland, ou=people, dc=ec-group, dc=com
cn: Chris Bowland
sn: Bowland
givenName: Chris
mail: cyb@xxxxxxxxxxxx
title: 314-663-3132
telephoneNumber: 33
homeTelephoneNumber: 314-835-1216
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson



Then I feed it to openldap with

slapadd -l phoneList.ldif

--
Brian Millett - [ Garibaldi, "The Gathering"]
"Commander, this little breach of security isn't going to affect my
 Christmas bonus, is it?"


[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux