Доброго дня!.
Командой ldapsearch делаю выборку smtp адресов пользователей (через cron):/usr/local/bin/ldapsearch -h 192.168.1.1 -p 389 -P 3 -D 'cn=ldap,ou=ldap,dc=domain,dc=ua' -w 'Bigsecret123' -b 'dc=domain,dc=ua' '(&(proxyAddresses=smtp:*)(|(objectClass=user)(objectClass=group)))' proxyAddresses> /usr/local/etc/ldapquery
Работает нормально, результат скидывается в файл ldapquery. Но вот проблема, если сервер недоступен по какой-то причине, то файл, естественно, после выполнения команды пустой.
Помогите написать скриптик, что бы в случае ошибки запроса, результат не записывался в файл.
>[оверквотинг удален]
> Командой ldapsearch делаю выборку smtp адресов пользователей (через cron):
>
> /usr/local/bin/ldapsearch -h 192.168.1.1 -p 389 -P 3 -D 'cn=ldap,ou=ldap,dc=domain,dc=ua' -w 'Bigsecret123' -b 'dc=domain,dc=ua' '(&(proxyAddresses=smtp:*)(|(objectClass=user)(objectClass=group)))' proxyAddresses> /usr/local/etc/ldapquery
>
> Работает нормально, результат скидывается в файл ldapquery. Но вот проблема, если
>сервер недоступен по какой-то причине, то файл, естественно, после выполнения команды
>пустой.
> Помогите написать скриптик, что бы в случае ошибки запроса, результат не
>записывался в файл.
>......>/usr/local/etc/ldapquery.tmp
if [ $? == 0 ]
then
cat /usr/local/etc/ldapquery.tmp > /usr/local/etc/ldapquery
fi
>[оверквотинг удален]
>>пустой.
>> Помогите написать скриптик, что бы в случае ошибки запроса, результат не
>>записывался в файл.
>>
>
>......>/usr/local/etc/ldapquery.tmp
>if [ $? == 0 ]
>then
> cat /usr/local/etc/ldapquery.tmp > /usr/local/etc/ldapquery
>fiНе понял первую строчку. Понятно что ldapquery.tmp - временный файл, а как его определить??
>[оверквотинг удален]
>>>
>>
>>......>/usr/local/etc/ldapquery.tmp
>>if [ $? == 0 ]
>>then
>> cat /usr/local/etc/ldapquery.tmp > /usr/local/etc/ldapquery
>>fi
>
> Не понял первую строчку. Понятно что ldapquery.tmp -
> временный файл, а как его определить??С этим разобрался, но после запуска скрипта пишет ошибку
[0==0]: not found
Press any key to continue...В файле ldapquery.tmp есть результат, но в ldapquery не копируется.
>[оверквотинг удален]
>>
>> Не понял первую строчку. Понятно что ldapquery.tmp -
>> временный файл, а как его определить??
>
>С этим разобрался, но после запуска скрипта пишет ошибку
>
>[0==0]: not found
>Press any key to continue...
>
>В файле ldapquery.tmp есть результат, но в ldapquery не копируется.if <пробел> [ <пробел> $?<пробел> ==<пробел> 0 <пробел>]
>[оверквотинг удален]
>>> временный файл, а как его определить??
>>
>>С этим разобрался, но после запуска скрипта пишет ошибку
>>
>>[0==0]: not found
>>Press any key to continue...
>>
>>В файле ldapquery.tmp есть результат, но в ldapquery не копируется.
>
>if <пробел> [ <пробел> $?<пробел> ==<пробел> 0 <пробел>]Вот скрипт
#!/bin/sh
/usr/local/bin/ldapsearch -h 192.168.1.1 -p 389 -P 3 -D 'cn=ldap,ou=ldap,dc=domain,dc=ua' -w 'Bigsecret123' -b 'dc=domain,dc=ua' '(&(proxyAddresses=smtp:*)(|(objectClass=user)(objectClass=group)))' proxyAddresses> /usr/local/etc/ldapquery > /usr/local/etc/ldapquery.tmpif [ $? == 0 ]
then cat /usr/local/etc/ldapquery.tmp > /usr/local/etc/ldapquery
fiОшибка
[: 0: unexpected operator
В чем проблема? Что я не так делаю?
#!/bin/sh/usr/local/bin/ldapsearch -h 192.168.1.1 -p 389 -P 3 -D
'cn=ldap,ou=ldap,dc=domain,dc=ua' -w 'Bigsecret123' -b 'dc=domain,dc=ua'
'(&(proxyAddresses=smtp:*)(|(objectClass=user)(objectClass=group)))' proxyAddresses > /usr/local/etc/ldapquery.tmpif [ $? == 0 ]
then cat /usr/local/etc/ldapquery.tmp > /usr/local/etc/ldapquery
else
echo "Error......"
exit 1
fi
Если не получится попробуйте == заменить на -eq
>[оверквотинг удален]
>
>if [ $? == 0 ]
>then cat /usr/local/etc/ldapquery.tmp > /usr/local/etc/ldapquery
>fi
>
>Ошибка
>
>[: 0: unexpected operator
>
>В чем проблема? Что я не так делаю?Фсем спасибо, проблема решена.
if [ -s /usr/local/etc/ldapquery.tmp ]
then cat /usr/local/etc/ldapquery.tmp > /usr/local/etc/ldapquery
fi
>>)(|(objectClass=user)(objectClass=group)))' proxyAddresses> /usr/local/etc/ldapquery > >>/usr/local/etc/ldapquery.tmp/usr/local/etc/ldapquery уберите.
Лучше ориентироваться на статус завершения команды.
Здесь прокатит, другая команда напишет что-нибудь в файл.
>Лучше ориентироваться на статус завершения команды.
>Здесь прокатит, другая команда напишет что-нибудь в файл.Да. Я с вами согласен. Но ошибка всеравно
if [ $? == 0 ]
then cat /usr/local/etc/ldapquery.tmp > /usr/local/etc/ldapquery
else
echo "Error......"
exit 1
fi
[: 0: unexpected operator
Error ...И хоть ты тресни:-)).
P.S.: Спасибо за помощь!
>[оверквотинг удален]
>exit 1
>fi
>
>
>[: 0: unexpected operator
>Error ...
>
>И хоть ты тресни:-)).
>
>P.S.: Спасибо за помощь!Блин.! Работает. Я написал 2 знака равно. Нада один-же)).
>[оверквотинг удален]
>>
>>
>>[: 0: unexpected operator
>>Error ...
>>
>>И хоть ты тресни:-)).
>>
>>P.S.: Спасибо за помощь!
>
>Блин.! Работает. Я написал 2 знака равно. Нада один-же)).Мда man bash и man test несколько отличаются насчёт "=".
PS у меня работало ==. В man test
STRING1 = STRING2
the strings are equalSTRING1 != STRING2
the strings are not equalINTEGER1 -eq INTEGER2
INTEGER1 is equal to INTEGER2