Добавление к скрипту ZIMBRA+LDAP

Приветствую, комрады! Был тут месяц назад прикол. Поставил я свой скрипт в crontab и каждые 10 минут он синхронизировался с AD. Админы просто не могли не нарадоваться: приходит пользователь, мол, так и так, они в AD чуть подправят, то создадут — красота :) им и мне хорошо, лишний раз не дергают "что да как? а где? а что нажать?"... Но тут ГРЯНУЛ ГРОМ!!!! И был ребут серваков. Так как zimbra находится на виртуалке, то она поднялась быстрее, чем Active Dyrectory и тут скрипт отработал. В итоге он похерил почти всю почту... мол, нет хозяина такой почты. Ох и разборы полетов были. Скрипт был снят с crontab до сегоднешго дня. Итак, скрипт делает 2 проверки.

1. Наличие Ping причем count стоит на 10 и не дай бог будет хоть один received, скрипт не сработает

2. Если скрипт проходит, то осуществляется проверка имени. Участвует мой логин (заведомо существующий), если проверка не проходит, то скрипт не запустеться.

Для чего нужен пункт 2. Иногда бывает, что сетевуха вам уже на пинг отвечает, а вот AD ещё не поднялось.

Ну вот собственно и само дополнение к скрипту.

#!/bin/bash
#
# Добавляем ip или имена хостов через пробел.
HOST="192.168.1.10"
COUNT=1
name=drugoedelo
date=`date`
  for pings in $HOST
     do
   count=$(ping -c $COUNT $pings | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
        if [ $count -eq 0 ]; then
echo "$date: !!Ну и //убрано модератором// ты смотришь? БЕГОМ В СЕРВЕРНУЮ ЗАПУСКАТЬ AD епт" >> /tmp/example
    else
ms=`/opt/zimbra/bin/ldapsearch -x -H ldap://МЕГО_ДОМЕН.ру -b dc=МЕГО_ДОМЕН,dc=ру -D "CN=приколись,CN=users,DC=МЕГО_ДОМЕН,DC=ру" -w приколись_ещё "(sAMAccountName=*)" | grep drugoedelo | awk -F' ' '{ print $2 }'`
if [ "$ms" = "$name" ]; then
echo "все //убрано модератором//"
#########################################################################################################################
!!!!!!!!!!!!!!!!!ТЕЛО ПРЕДЫДУЩЕГО СКРИПТА!!!!!!!!!!!!!!!!!!!!
#########################################################################################################################
else
echo "$date: Не проходит проверка на логин drugoedelo, может не работет AD, а если работает, //убрано модератором// теперь!" >> /tmp/nice
fi
 fi
  done

P.S. вот такой вот простенький скриптик. Когда дошли руки до zimbra, был сваян буквально за 30 минут вместе с отладкой и проверкой. Думаю, что может кому-нибудь он и пригодится.

 

Желаю всем удачи. Спасибо за внимание.

3627

Комментарии

Скрипт конечно отличный =) Но не совсем ясна работа предыдущего, если он не может подключиться к АД, и получить из него информацию, то и скрипт не срабатывал же насколько я понимаю? По крайней мере у меня все происходило именно так. К тому же предыдущий скрипт не удалял "системных" пользователей (учетки spamm, ham, admin и т.д.)

Нет предыдущий скрипт как рас так не делал. Он так сказать просто заполнял файлы (которые потом удаляются) из которых уже и вносилась почта построчно. А когда фаил который он якобы выгружает с АД то фаил будет пуст. И при сравнении 2 файлов один будет полный а другой пустой. Соответственно после сравнения скрипт думает что этих почтовиков в АД нету и надо удалить те что есть :).

Дело в том что почтовики spamm, ham, admin у меня находятся на другом домене (он изначально был тестовый) а рабочий домен у меня другой. Поэтому почтовики эти и остались. В любом случаи если у тебя так не происходило то я рад. А скриптом поделился просто для того чтобы у ково такое возникнит, то чтобы он велосипед не изобретал как я :). А взял так сказать нашел и про себя подумал заебись то как спасибо :).

Вообще считаю что все эти скрипты это ооочень большие кастыли и надо это как-то не знаю подстрич чтолэ. Но пока нет на это времени. Щас вплотную занимаюсь Zenoss

Тут вы конечно абсолютно правы. За скрипты еще раз спасибо :)

К большому сожалению костыли, пока что единственный выход для тех кто использует open source версию. Это касается как синхронизации с AD так и создания бэкапов.

PS: А какой смысл в zennos если есть zabbix ?

О... для меня это целая история. На предыдущей работе я занимался Tivoli от IBM даже ездил в крок на так сказать небольшое обучение, ребята канечно молодци вдолюили кучу инфы буквально за день. Просто Zabbix очень схож по своей структуре с tivoli, в котором я просто замучался рисовать карты мониторинга дл операторов да и как-то не до конца я понимал как оно работает. Честно пробывал а Zabbix да вот только слишком много там приходилось дописывать, например чего стоила только одна посылка алертов через почту о_О ужасть просто кастыль кастылей просто получился. Потом грянул гром и пришлось переходить на свой почтовик, вот так и нашел этот сайт :) и узнал о zenoss. А потом подумал ну zabbix боле менее знаю а вот с zenoss не знаком. А ещё он мне приглянулся тем что карты он рисует классно :) прям влюбился. Почитал про его функционал и всем моим требованиям он удовлетворяет. Теперь вот занимаюсь само обучением. Думаю что когда-нибудь разбирусь до таково что он службы будет поднимать которе нужно через snmp :) но это позже гооораздо позже. Пока первые шаги. Кстати на днях может среда или вторник выложу третью часть мануала :) по zenoss.

Вы меня прям заинтересовали, с удовольствием почитаю, самообучение штука обязательная в IT.

а меня вот интересует с помощью GAL это не реализовать?

Что именно реализовать? Или не реализовать?

Если вы про учё1тные записи. То я не представляю как это сделать в гал?

Помоему GAL переводиться как Global Address List или как-то так... а вот про учётки не слова.

Да и задача стояла такая. Что бы можно было заблокировать пользователя и его учётку одним движением. Блокируем в АД и всё. Провенился сотрудник или застали его при сливе инфы конкурентам. Учётка пеньк и всё и на почту он ни как не зайдёт не проверит и не удалит. Ну и там всякие фкусности чтобы учётка автоматом создавалась удалялась... Канечно полной синхронизации с АД у меня не получилось. Но скриптик бесперебойно и безошибочно трудиться уже вот как месяцев 7 где-то.

А ГАЛ это просто адресная книжка (простыми словами)

ну учетки она создает... только помоему не синхронищирует....

попробую lcs прикрутить к такому случаю...., если получится и кому надо могу выложить....

А зачем вам такое горе со вторим скриптом? Не проще ли би завести secondary/third/forth AD DC (RODC тоже хорош ) на том же Virtual Host-e и просто проконфить VM Зимбру ставать на минут 5 позже RODC? Тогда нам пофиг будет стал ли уже мастер АД Домейн Контроллер оль нет?

П.С. как говорится sorry for my english but it is not my native language ... да и расскладка тоже не русская

Имею ввиду пользоваться RODC не только для Зимбри, но и для резервирности ... как М$ рекомендуют

Просто как бекъп логин сервер в случай нового грома :)

rudin аватар

 В 8 Zimbra появился auto account provisioning. То, о чем Вы говорите - это EAGER mode его. Через заданный интервал времени опрашивает AD и создает акаунты. Есть еще LAZY mode, создает акаунты в момент первого захода пользователя.

 УРААА как говориться не прошло и года. Хотя нет год то прошел с тех пор как я скрипт замутил и оттестил. Но все равно спасибо за прекрасную новость.

 eager mode как пишут, еще сыроват.
В данном скрипте есть один ньюанс: если раскоментировать строчки с удалением пользователей, которых нет в AD, то удаляются так же системные записи zimbra типа: galsync, ham, virus-qurantine,spam. Возможно ли сделать в скрипте исключения по каким-либо заданным учеткам? Или же их просто надо в AD продублировать?
rudin аватар
 Что-то мне подсказывает, что надо смотреть на шаблоны синхронизации или фильтры, ну там где прописываются %u такие записи. Но я могу и ошибаться.
 Все гораздо проще. У мея просто в зимбре два домена. И все эти пользователи галсинк и тд и тп. Находятся в другом домене. 
 Канечно можно кто мешает то?:)
В конечном списке где идут сравнения. Допишу просто обработку файла удалить строчки с и напиши что там нужно тебе удалить :)