Ldapsearch using variable will not work


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Ldapsearch using variable will not work
# 1  
Old 10-17-2016
Ldapsearch using variable will not work

When I execute the code below with cn set to the $adgroup variable, I get the following error:
Code:
Invalid DN syntax (34)
Additional information: 0000208F: NameErr: DSID-031001F7, problem 2006 (BAD_NAME), data 8349, best match of:
,ou=Resource,ou=groups,dc=abc,dc=somecompany,dc=com'

If I set cn equal to the group instead of using a variable, the code works perfectly fine.

What am I missing in regard to ldapsearch and variables that is causing this error?

Code:
#!/bin/bash
 #reads Groups.txt file and runs a new ldapsearch for group
while read -r adgroup; do
        echo $adgroup
        #ldapsearch connects to ldap, returns and formats member info, and writes to input.txt file
        ldapsearch -x -LLL -E pr=200/noprompt -o ldif-wrap=no -h abc-loc.somecompany.com \
        -D "account@somecompany.com" -w password -b "cn=$adgroup,ou=Resource,ou=groups,dc=abc,dc=somecompany,dc=com" \
         | grep member | sed 's/\\/\\\\/g' > /userid/bin/input.txt
         #reads input.txt file and runs a new ldapsearch for each member entry
        while IFS=":" read -r member info; do
                 #echo $info
                 ldapsearch -x -LLL -E pr=200/noprompt -h abc-loc.somecompany.com \
                -D "account@somecompany.com" -w password -b "ou=End Users,ou=Accounts,dc=abc,dc=somecompany,dc=com" \
                -s sub "distinguishedName=$info" displayName saMAccountName telephoneNumber mail department departmentNumber \
                extensionAttribute1 l st co userAccountControl |
                 #display output string in correct format
                awk -F: '
                NR == 1 {n = split (FLDS, T)
                        }
                        {OUT[$1] = substr ($2, 2)
                        }
                END     {for (i=1; i<=n; i++)   {printf "%s%s", ODL, OUT[T[i]]
                                 ODL = "|"
                                }
                         printf RS
                        }
                ' FLDS="displayName:sAMAccountName:telephoneNumber:mail:extensionAttribute1:department:departmentNumber:l:st:co:userAccountControl"
         #Define input filepath
        done < /userid/bin/input.txt
 #Define Group filepath
done < /userid/bin/GroupsTest1.txt


Last edited by rbatte1; 10-18-2016 at 06:07 AM.. Reason: Added CODE tags for output/errors
# 2  
Old 10-18-2016
Please show us the content of the input file, wrapped in CODE tags for clarity. There may be something illegal in there, or perhaps your script has to deal with spaces in a different way.



Kind regards,
Robin
This User Gave Thanks to rbatte1 For This Post:
# 3  
Old 10-18-2016
The GroupsTest1.txt file has one line. It is a group that I am wanting to get information from LDAP on. At some point, I'll add more groups to this file. It looks something like this.

Code:
ab_abc

The problem seems to be with this portion of code.

Code:
"cn=$adgroup,ou=Resource,ou=groups,dc=abc,dc=somecompany,dc=com"

The ldapsearch will not run because this string is not being concatenated properly. It should resolve as

Code:
"cn=ab_abc,ou=Resource,ou=groups,dc=abc,dc=somecompany,dc=com"

The input.txt file is blank because the first ldapsearch hasn't run. On a successful run, it will populate, but it doesn't get that far.
# 4  
Old 10-18-2016
Did you make sure the "GroupsTest1.txt" is a true *nix file, NOT an MS file with DOS line terminators <CR> (0x0d, \r, <carriage return>)? How did you create it?
If assigning adgroup manually on the command line, would the ldapsearch command run correctly?
This User Gave Thanks to RudiC For This Post:
# 5  
Old 10-18-2016
I created both .txt files using VI and yes, the search works perfectly fine if I enter the adgroup manually.

I created a new script in an attempt to isolate the problem area and have discovered that the "while read..." portion of the script seems to be causing the issue. If I take it out and modify the script slightly to build a portion of my ldapsearch string as shown below, I get good results in my input.txt file.

Code:
#!/bin/bash
 adgroup='ab_abc'
 var='cn='$adgroup
echo $var
var1=$var',ou=Resource,ou=groups,dc=abc,dc=somecompany,dc=com'
echo $var1
 ldapsearch -x -LLL -E pr=200/noprompt -o ldif-wrap=no -h abc-loc.somecompany.com -D "account@somecompany.com" -w password -b $var1 \
| grep member | sed 's/\\/\\\\/g' > /userid/bin/input.txt

It seems that maybe I'm using "while read" incorrectly as it cannot read and set my adgroup variable in a way that any function within the while read loop can interprate it.
# 6  
Old 10-18-2016
Just to be on the safe side: post the results of
Code:
echo $adgroup | od -ctx1  # inside the while loop, please!
od -ctx1 /userid/bin/GroupsTest1.txt

This User Gave Thanks to RudiC For This Post:
# 7  
Old 10-18-2016
Well, all that work only to find that I was in fact using an MS file. I edited the file with VI, but it was created as a MS .txt file.

I ran the code within the loop and saw the \r \nSmilie.

After recreating the file using VI, everything works as expected.

Thanks for your help guys. As frustrating as this is, it has been a good learning experience.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep doesn't work when assigning to variable

Hello, First of all, I'd like to say hello to all members of forum. Can You please help me with the matter described below? I am trying to fetch a data from the file to variable, I am doing this using below script: returned=`tail -50 SapLogs.log | grep -i -E "Error|"` echo $returned ... (2 Replies)
Discussion started by: jedzio
2 Replies

2. Shell Programming and Scripting

Work out max variable lengths in file

I have a pipe dilminted txt file with 30 variables in it. How can I calculate the maximum number of characters in each variable in the file. (2 Replies)
Discussion started by: RobWork
2 Replies

3. UNIX for Dummies Questions & Answers

Need assistance on using ldapsearch

Never knew of this command ldapsearch, but I would like to use it to lookup a single user and return where their office is. Is this possible? I'm totally starting from scratch. I already saw some of the gurus say read the man page, which is pretty greek when you don't know the details of... (1 Reply)
Discussion started by: srhadden
1 Replies

4. Programming

LDAPSEARCH in C

Hi all, I've been searching for ldapsearch function these few days. Still I couldn't found the solution. I would like to translate this query ldapsearch -x -LLL -h new_IP -p new_Port -D "cn=jw" -w "dummy" -b "id=2311,o=WC,c=jp" -s sub to ldap_search_ext_s() function in C program. ... (0 Replies)
Discussion started by: tailangong
0 Replies

5. Shell Programming and Scripting

Exporting my dynamical variable won't work?

Even though the idea "might" not be great I still wrote this piece of code to get practice.. Which means that it is the CODE that matters here. Anyways; The intension is to create a program(or do we call it script?) that searches recursively through a folder to find a file - stored in a... (4 Replies)
Discussion started by: Pesk
4 Replies

6. UNIX for Dummies Questions & Answers

How does the PATH environmental variable work?

Hello. I have a question about how the PATH environment variable works. I wrote a script in $HOME/bin/gvim. I want it to be called instead of /usr/bin/gvim, so I've placed it before in the PATH. However, it is still the old one that is found. If I open an other terminal, I have the... (6 Replies)
Discussion started by: qwer
6 Replies

7. Shell Programming and Scripting

export variable from ksh script doesn't work

Hi there, in a script I have #!/usr/bin/ksh TEST=hello export TEST Problem is, that the variable doesn't get exported. I also tried typeset -x TEST=hello When I put the two lines in my .profile, the variable is set fine. Whats could be the problem here? (4 Replies)
Discussion started by: doc_symbiosis
4 Replies

8. Shell Programming and Scripting

Use variable in sed don't work.

Hi all. I have a script as below: cutmth=`TZ=CST+2160 date +%b` export cutmth echo $cutmth >> date.log sed -n "/$cutmth/$p" alert_sbdev1.log > alert_summ.log My purpose is to run through the alert_sbdev1.log and find the 1st occurence of 'Jan' and send everything after that line to... (4 Replies)
Discussion started by: ahSher
4 Replies

9. Red Hat

ldapsearch doesnt work.

Hii All, I am using openldap v2.3 on redhat El-4. When i run ldapsearch it returns all the entries. The command runs successfully. But when I run the ldapsearch with following filter option it doesnt work and immediately returns to the shell. ldapsearch uidNumber>=2000 I've started slapd... (0 Replies)
Discussion started by: shamik
0 Replies

10. UNIX for Dummies Questions & Answers

does this variable call work--Korn

I am new to the UNIX environment, but not to programming. My intention is to create a 2D array and print it. Since the Korn Shell does not support that kind of variable, the following is my solution right now. I have created a group of variables as follows: table00 table01 table02 table10... (2 Replies)
Discussion started by: morkfard
2 Replies
Login or Register to Ask a Question