Hi list,
I'm having a problem in using the example back_shell example of OL distribution.
I'm using OL 2.4.21 as released in Ubuntu10.04 distribution.
This is my database definition:
database shell
suffix "dc=pippo,dc=it"
search /tmp/slapd_search.sh
This is the example script found in the OL distribution. Im my test this is /tmp/slapd_search.sh
#!/bin/bash
# $OpenLDAP: /servers/slapd/back-shell/searchexample.sh,v 1.9.2.6 2011/01/04 23:50:44 kurt Exp $
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2011 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted only as authorized by the OpenLDAP
## Public License.
##
## A copy of this license is available in the file LICENSE in the
## top-level directory of the distribution or, alternatively, at
## <http://www.OpenLDAP.org/license.html>.
#
## Portions Copyright (c) 1995 Regents of the University of Michigan.
## All rights reserved.
##
## Redistribution and use in source and binary forms are permitted
## provided that this notice is preserved and that due credit is given
## to the University of Michigan at Ann Arbor. The name of the University
## may not be used to endorse or promote products derived from this
## software without specific prior written permission. This software
## is provided ``as is'' without express or implied warranty.
while [ 1 ]; do
read TAG VALUE
#echo "TAG: $TAG" >>/tmp/temp1.txt
#echo "VALUE: $VALUE" >>/tmp/temp1.txt
if [ $? -ne 0 ]; then
break
fi
case "$TAG" in
base:)
BASE=$VALUE
;;
filter:)
FILTER=$VALUE
;;
# include other parameters here
esac
done
LOGIN=`echo $FILTER | sed -e 's/.*=\(.*\))/\1/'`
PWLINE=`grep -i "^$LOGIN" /etc/passwd`
#sleep 60
# if we found an entry that matches
if [ $? = 0 ]; then
echo $PWLINE | awk -F: '{
printf("dn: cn=%s,%s\n", $1, base);
printf("objectclass: top\n");
printf("objectclass: person\n");
printf("cn: %s\n", $1);
printf("cn: %s\n", $5);
printf("sn: %s\n", $1);
printf("uid: %s\n", $1);
}' base="$BASE"
echo ""
fi
# result
echo "RESULT"
echo "code: 0"
exit 0
This is the result. I cannot see my user listed
root@LTSP-vanilla:/etc/ldap/slapd.conf.d# ldapsearch -v -x -s sub -b "dc=pippo,dc=it" "(cn=marco)"
ldap_initialize( <DEFAULT> )
filter: (cn=marco)
requesting: All userApplication attributes
# extended LDIF
#
# LDAPv3
# base <dc=pippo,dc=it> with scope subtree
# filter: (cn=marco)
# requesting: ALL
#
# search result
search: 2
result: 0 Success
# numResponses: 1
By using strace I can see full execution appering.
This is the final excerpt of my output:
Process 3914 detached
[pid 3915] <... read resumed> "", 4096) = 0
[pid 3915] write(1, "dn: cn=marco,dc=pippo,dc=it\nobjectclass: top\nobjectclass: person\ncn: marco\ncn: marco,,,\nsn: marco\nuid: marco\n", 109) = 109
[pid 3915] exit_group(0) = ?
Process 3915 detached
[pid 3909] <... waitpid resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0) = 3914
[pid 3909] waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0) = 3915
[pid 3909] rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
[pid 3909] rt_sigaction(SIGINT, {SIG_DFL, [], 0}, {0x8086b90, [], 0}, 8) = 0
[pid 3909] close(4) = -1 EBADF (Bad file descriptor)
[pid 3909] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[pid 3909] --- SIGCHLD (Child exited) @ 0 (0) ---
[pid 3909] waitpid(-1, 0xbfda677c, WNOHANG) = -1 ECHILD (No child processes)
[pid 3909] sigreturn() = ? (mask now [])
[pid 3909] write(1, "\n", 1) = 1
[pid 3909] rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
[pid 3909] read(255, "\n# result\necho \"RESULT\"\necho \"code: 0\"\n\nexit 0\n\n", 1835) = 48
[pid 3909] rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
[pid 3909] rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
[pid 3909] write(1, "RESULT\n", 7) = 7
[pid 3909] rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
[pid 3909] write(1, "code: 0\n", 8) = 8
[pid 3909] rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
[pid 3909] rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
[pid 3909] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[pid 3909] exit_group(0) = ?
Process 3909 detached
[pid 3767] <... read resumed> "dn: cn=marco,dc=pippo,dc=it\nobjectclass: top\nobjectclass: person\ncn: marco\ncn: marco,,,\nsn: marco\nuid: marco\n", 4096) = 109
[pid 3767] --- SIGCHLD (Child exited) @ 0 (0) ---
[pid 3767] waitpid(-1, NULL, WNOHANG) = 3909
[pid 3767] waitpid(-1, NULL, WNOHANG) = -1 ECHILD (No child processes)
[pid 3767] sigreturn() = ? (mask now [])
[pid 3767] read(19, "\nRESULT\ncode: 0\n", 4096) = 16
[pid 3767] read(19, "", 4096) = 0
[pid 3767] time(NULL) = 1299531296
[pid 3767] send(4, "<167>Mar 7 21:54:56 slapd[3765]: shell: fgets failed: Success (0)\n", 67, MSG_NOSIGNAL) = 67
[pid 3767] write(16, "0\f\2\1\2e\7\n\1\0\4\0\4\0", 14) = 14
[pid 3767] time(NULL) = 1299531296
[pid 3767] send(4, "<167>Mar 7 21:54:56 slapd[3765]: conn=1003 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=\n", 94, MSG_NOSIGNAL) = 94
[pid 3767] close(19) = 0
[pid 3767] munmap(0xb777f000, 4096) = 0
[pid 3767] futex(0x212fc060, FUTEX_WAIT_PRIVATE, 32, NULL <unfinished ...>
[pid 3766] <... epoll_wait resumed> {{EPOLLIN, {u32=556622232, u64=556622232}}}, 1024, 450000) = 1
[pid 3766] epoll_ctl(7, EPOLL_CTL_MOD, 16, {0, {u32=556622232, u64=556622232}}) = 0
[pid 3766] futex(0x212fc060, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x212fc05c, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} <unfinished ...>
[pid 3789] <... futex resumed> ) = 0
[pid 3789] futex(0x212fc044, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>
[pid 3766] <... futex resumed> ) = 1
[pid 3766] futex(0x212fc044, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid 3789] <... futex resumed> ) = 0
[pid 3789] futex(0x212fc044, FUTEX_WAKE_PRIVATE, 1) = 0
[pid 3789] time(NULL) = 1299531296
[pid 3789] read(16, "0\5\2\1\3B\0", 8) = 7
[pid 3789] time(NULL) = 1299531296
[pid 3789] read(16, "", 8) = 0
[pid 3789] write(6, "0", 1) = 1
[pid 3789] time(NULL) = 1299531296
[pid 3789] send(4, "<167>Mar 7 21:54:56 slapd[3765]: conn=1003 op=2 UNBIND\n", 56, MSG_NOSIGNAL) = 56
[pid 3789] epoll_ctl(7, EPOLL_CTL_DEL, 16, {0, {u32=556622232, u64=556622232}}) = 0
[pid 3789] shutdown(16, 2 /* send and receive */) = 0
[pid 3789] close(16) = 0
[pid 3789] time(NULL) = 1299531296
[pid 3789] send(4, "<167>Mar 7 21:54:56 slapd[3765]: conn=1003 fd=16 closed\n", 57, MSG_NOSIGNAL) = 57
[pid 3789] futex(0x212fc060, FUTEX_WAIT_PRIVATE, 34, NULL <unfinished ...>
[pid 3766] <... futex resumed> ) = 1
[pid 3766] time(NULL) = 1299531296
[pid 3766] epoll_wait(7, {{EPOLLIN, {u32=556622188, u64=556622188}}}, 1024, 1283000) = 1
[pid 3766] read(5, "0", 8192) = 1
[pid 3766] time(NULL) = 1299531296
[pid 3766] epoll_wait(7, <unfinished ...>
[pid 3765] <... futex resumed> ) = ? ERESTARTSYS (To be restarted)
[pid 3765] futex(0xb7609bd8, FUTEX_WAIT, 3766, NULL^C <unfinished ...>
Process 3765 detached
Process 3766 detached
Process 3767 detached
Process 3789 detached
As you can see with bold font, I obtain a strange behaviour "fgets failed". But user "marco" exists in /etc/passwd.
Someone could tell me what is wrong?
Thanks in advance
Marco
--
_________________________________________
Non è forte chi non cade, ma chi cadendo ha la forza di rialzarsi.
Jim Morrison