The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Почему так странно работает ldapsearch в скрипте?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Почему так странно работает ldapsearch в скрипте?"  +/
Сообщение от DanSab (ok) on 10-Сен-12, 15:58 
#! /bin/bash
ldapurl="ldap://ad.local.lan:389"
basedn="OU=some,DC=local,DC=lan"
binddn="CN=someuser,OU=piter,DC=local,DC=lan"
ldappas="somepass"
ldapsrc="ldapsearch -LLL -H \"$ldapurl\" -b \"$basedn\" -D \"$binddn\" -w \"$ldappas\""
$ldapsrc

На выходе:
Could not parse LDAP URI(s)="ldap://ad.local.lan:389" (3)

Причем, если написать
echo $ldapsrc
и руками выполнить то, что возвращает echo — все отлично.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Почему так странно работает ldapsearch в скрипте?"  +/
Сообщение от XAnder (ok) on 10-Сен-12, 16:58 
> На выходе:
> Could not parse LDAP URI(s)="ldap://ad.local.lan:389" (3)

Кавычки стали частью URI, т. е. ldapsearch получил

"ldap://ad.local.lan:389"

о чём честно и сообщил, а нужно ему было

ldap://ad.local.lan:389

> Причем, если написать
> echo $ldapsrc
> и руками выполнить то, что возвращает echo — все отлично.

А вот тут шелл кавычки съедает, и ldapsearch получает то, что надо.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Почему так странно работает ldapsearch в скрипте?"  +/
Сообщение от erera22 (ok) on 11-Сен-12, 18:32 
>[оверквотинг удален]
> basedn="OU=some,DC=local,DC=lan"
> binddn="CN=someuser,OU=piter,DC=local,DC=lan"
> ldappas="somepass"
> ldapsrc="ldapsearch -LLL -H \"$ldapurl\" -b \"$basedn\" -D \"$binddn\" -w \"$ldappas\""
> $ldapsrc
> На выходе:
> Could not parse LDAP URI(s)="ldap://ad.local.lan:389" (3)
> Причем, если написать
> echo $ldapsrc
> и руками выполнить то, что возвращает echo — все отлично.

По крайней мере не надо выполнять двойное экранирование a="a -a \"param\"". Сделайте проще:

#!/bin/bash

ldapurl="ldap://ad.local.lan:389"
basedn="OU=some,DC=local,DC=lan"
binddn="CN=someuser,OU=piter,DC=local,DC=lan"
ldappas="somepass"
ldapsearch=$(which ldapsearch)
RETVAL=0

$ldapsearch -LLL -H "$ldapurl" -b "$basedn" -D "binddn" -w "$ldappas"
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
   echo "OK"
else
   echo "Failed"
fi

exit $RETVAL

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру