Реализация представлена в виде представления с SQL-запросом, собирающим всю необходимую информацию для последующей фильтрации.
Результатом выполнения представления является таблица со следующими параметрами:
Настройка отчёта состоит из 2-х этапов:
Для подготовки скрипта сбора данных необходимо выполнить следующие действия:
#!/bin/bash
groups=$(getent group | cut -d: -f1)
for group in $groups; do
members=$(getent group "$group" | cut -d: -f4 | tr ',' ' ')
echo "Group: $group"
echo "Members: $members"
echo ""
done
До начала подготовки представления требуется дождаться выполнения настроенных скриптов. Убедиться в выполнении скриптов можно с помощью панели "Статистика" внутри элемента скрипта.
Для подготовки представления необходимо выполнить следующие действия:
Для определения названия таблицы необходимо выполнить следующие действия:
1.1 Авторизоваться под УЗ с правами администратора на компьютере, на который назначен скрипт;
1.2 Перейти в директорию /var/zodiac/agent/scrwd;
1.3 Обнаружить директорию с содержимым привязанного скрипта index.sh;
1.4 Первое число имени директории является приставкой к имени таблицы, которое в дальнейшем необходимо будет отредактировать в SQL-запросе.
Пример:
Есть скрипт, привязанный раннее к компьютеру с именем ETCD-PTR-03
Чтобы узнать приставку таблицы, созданной для сохранения результата выполнения скрипта, авторизуемся под УЗ администратора на данном компьютере и перейдём в указанную директорию.
Путем перебора обнаружим искомую директорию.
Для того, чтобы не перебирать вручную все директории, можно воспользоваться скриптом:
#!/bin/bash
# Перебираем все директории и поддиректории
find . -type d | while read dir; do
# Проверяем наличие файла index.sh в текущей директории
if [ -f "$dir/index.sh" ]; then
# Ищем слово ldapsearch в файле index.sh
if grep -q "ldapsearch" "$dir/index.sh"; then
# Если найдено, выводим название директории
echo "$dir"
fi
fi
done
Внутри скрипта потребуется указать искомое ключевое слово вместо ldapsearch и путь до директории, в которой производится поиск (если скрипт уже не находится в соответствующей директории).
В данном случае искомой приставкой является 26, т.е. названием таблицы будет являться dyn_tbl_script_26.
SELECT
computer.hostname AS hostname,
group_users.data ->> 'Group' AS group_name,
group_users.data ->> 'Members' AS members
FROM public.dyn_tbl_script_X1 AS group_users
JOIN public.computer ON group_users.computer_id = computer.id
Внутри SQL-запроса заменить следующие приставки:
Перейти в подраздел Столбцы представления и выставить типы для следующих колонок:
Выставить для каждой колонки отображаемые имена (колонка Имя);
Сохранить созданное представление. В случае некорректной настройки появится предупреждение об ошибке.
Для применения представления необходимо выполнить следующие действия: