Написал небольшой скрипт для автоматизации установки прав доступа на элементы. Скрипт будет работать без перезапуска Hyperion Planning
Используем bash для получения данных и формирования SecFile.txt для утилиты ImportSecurity.cmd
Для начала создадим конф файл для установки прав доступа - access_mode.cfg :
once:1400:08.06.2014:Application1:Regional_1:READ
once:1800:09.06.2014:Application2:Regional_2:WRITE
Код скрипта, как обычно комментарии по ходу
Если статья была вам полезна - кликните на баннер или кнопку Donate :)
Используем bash для получения данных и формирования SecFile.txt для утилиты ImportSecurity.cmd
Для начала создадим конф файл для установки прав доступа - access_mode.cfg :
once:1400:08.06.2014:Application1:Regional_1:READ
once:1800:09.06.2014:Application2:Regional_2:WRITE
Код скрипта, как обычно комментарии по ходу
#!/bin/bash
# Получаем данные из базы о текущем элементе для формирования SecFile
function extract() {
group=`$ORACLE_HOME/BIN/sqlplus -S -L $ora_user/$ora_pass@$oracle_sid << EOF | iconv -f utf-8 -t cp1251
set echo off
set timing off
set heading off
set linesize 3000
set verify off
set termout on
set pages 50000
SET FEEDBACK OFF
select * from (
(select g.name || '|' || o.object_name || '|' || decode (a.flags, 0, 'MEMBER', 5, '@ICHILDREN', 6, '@ICHILDREN', 8, '@DESCENDANTS', 9, '@DESCENDANTS', 'ERROR') as "FLAGS"
from $application.hsp_object o, $application.hsp_access_control a, $application.hsp_group c, h11.css_groups g where upper(o.object_name)=upper('$element_name')
and o.object_id=a.object_id
and a.user_id=c.group_id
and c.sid=g.identity_id)
union all
(select u.name || '|' || o.object_name || '|' || decode (a.flags, 0, 'MEMBER', 5, '@ICHILDREN', 6, '@ICHILDREN', 8, '@DESCENDANTS', 9, '@DESCENDANTS', 'ERROR') as "FLAGS"
from $application.hsp_object o, $application.hsp_access_control a, $application.hsp_users d, h11.css_users u where upper(o.object_name)=upper('$element_name')
and o.object_id=a.object_id
and a.user_id=d.user_id
and d.sid=u.identity_id) );
EOF
`
# Формируем SecFile из полученных данных
echo "$group" | sed -e '/^$/d' |while read count; do
member=$(echo $count | awk -F"|" {'print $1'} )
status=$(echo $count | awk -F"|" {'print $3'} )
echo "\"$member\",\"$element_name\",$access_mode,$status" >> SecFile.txt
done
}
# Get Current Time
current_time=$(date +'%H%M')
current_date=$(date +'%d.%m.%y')
current_day="$(echo $current_date | awk -F'.' {'print $1'} )"
current_month="$(echo $current_date | awk -F'.' {'print $2'} )"
# получаем путь до скрипта
path=$(dirname $(readlink -e "$0"))
# переходим в папку с утилитами Hyperion Planning
cd $(cygpath -u "E:\Oracle\Middleware\user_projects\epmsystem1\Planning\planning1")
# Чистим файл
:> SecFile.txt
# Парсим конф файл, проверяем даты запуска
cat "$path"/access_mode.cfg | grep -v "#" | while read element; do
operation_type="$(echo $element | awk -F':' '{print $1}')"
launch_time="$(echo $element | awk -F':' '{print $2}')"
###
launch_date="$(echo $element | awk -F':' '{print $3}')"
launch_day="$(echo $launch_date | awk -F'.' '{print $1}')"
launch_month="$(echo $launch_date | awk -F'.' '{print $2}')"
###
application="$(echo $element | awk -F':' '{print $4}')"
element_name="$(echo $element | awk -F':' '{print $5}')"
access_mode="$(echo $element | awk -F':' '{print $6}')"
if [ "$current_time" -eq "$launch_time" ];then
if [ "$current_day" -eq "$launch_day" ];then
if [ "$launch_month" -eq "$current_month" ];then
extract
# Запускаем импорт Security из заранее сформированного файла
./ImportSecurity.cmd -f:"pass.txt" "$application, hyperion"
fi
else
echo "No Tasks for Date: $current_day"
fi
else
echo "No Tasks for Time: $current_time"
fi
done
Если статья была вам полезна - кликните на баннер или кнопку Donate :)
Комментариев нет:
Отправить комментарий