В одной из прошлых статей была рассмотрена синхронизация пользователей AD с IVA MCU.
Задание на синхронизацию LDAP каталогов выполняется раз в сутки в 7:00 и производитель не предусмотрел никаких инструментов для корректировки расписания. Если в вашей компании довольно большое число пользователей и изменения в течение дня бывает довольно много, то ждать сутки синхронизации с IVA не совсем уместно, а выполнять синхронизацию руками не выбор системного администратора.
Если хорошо разобраться в вопросе, то настройки системных заданий можно найти в базе данных ivcs, в таблицах quartz.simprop_triggers и quartz.triggers.
quartz.simprop_triggers – хранит настройки периодичности запуска заданий
quartz.triggers – хранит данные о состоянии задании, а также время старта/остановки и следующего запуска.
Для просмотра текущих настроек задания по синхронизации LDAP каталога необходимо выполнить запросы к БД. Для этого воспользуемся консольным клиентом psql.
sudo -u postgres psql -d ivcs
После входа в консоль выполните запросы:
SELECT * FROM quartz.simprop_triggers WHERE trigger_name = ‘su.ivcs.videoconference.jobs.ldap.LdapUserCacheSynchronizationJob.JOB_ID’;
Это означает что задание будет выполнять 1 раз в день.
Как видно в свойствах задания str_prop_1 стоит значение DAY, а в свойстве int_prop_1 стоит 1.
SELECT * FROM quartz.triggers WHERE trigger_name = ‘su.ivcs.videoconference.jobs.ldap.LdapUserCacheSynchronizationJob.JOB_ID’;
Отсюда видно, что trigger_state находится в состоянии WAITING, т.е. задаине не выполняется. Ещё есть свойство start_time – это время запуска. Интересны prev_fire_time и next_fire_time, что является временем прошлого запуска и временем следующего запуска.Время в данный свойствах хранится в формате TIMESTAMP. TIMESTAMP — хранит сколько прошло секунд с 1970-01-01 00:00:00 по нулевому часовому поясу. Для проверки значений можете воспользоваться функцией powershell.
Если взять значение prev_fire_time 1710907200000, у меня это 20 марта 2024 г. 7:00:00, то от него будет проще рассчитать нужное расписание.
Делим 1710907200000 на 1000 и прибавляем необходимое количество секунд, далее умножаем опять на 1000. Проверяем, у меня получилось 1710921600000, это 20 марта 2024 г. 12:00:00.
Теперь выполняем изменения в базе данных. Я хочу, чтобы задание выполнялось раз в 30 минут.
UPDATE quartz.simprop_triggers SET str_prop_1 = ‘MINUTE’, int_prop_1 = ’30’ WHERE trigger_name = ‘su.ivcs.videoconference.jobs.ldap.LdapUserCacheSynchronizationJob.JOB_ID’;
Далее изменяю время запуска задания
UPDATE quartz.triggers SET next_fire_time = ‘1710921600000’ WHERE trigger_name = ‘su.ivcs.videoconference.jobs.ldap.LdapUserCacheSynchronizationJob.JOB_ID’;
Теперь осталось только дождаться времени выполнения задания и убедиться, что всё работает корректно. Для этого я предоставлю доступ пользователю добавив его в группу доступа AD.
Предоставляю пользователю доступ к IVA
Ожидаем время запуска задания.
LDAP синхронизация прошла успешно.
Пользователь синхронизировался
Спустя пол часа проверяем, что задание будет выполняться и дальше .
Успешно! Учтите, что всё настройки в базе данных вы выполняете на свой страх и риск. Никто не знает к каким последствиям могут привести внесения изменений в БД.
Добавить комментарий