06 апреля 2012

MaxL по расписанию

Часто бывает необходимым поставить выполнение MaxL скрпита в расписание. Причем этот скрипт создан в EAS Console и хранится на сервере. Я решил эту задачу созданием batch файла, который ставится в расписание Windows Server:
@echo off
rem - Input parameter is a name of MaxL script (only name w/out extension)
Входящим параметром является имя MaxL скрпита без расширения.
setlocal
cls

Rem Set Variables
SET ESSSETENV=F:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\bin\setEssbaseEnv.bat
SET SERVER=EssbaseServerNameOrIP
SET USER=Ess_admin_name
SET PASSWORD=Ess_password
Rem See more info about Encyption on https://forums.oracle.com/forums/thread.jspa?threadID=1021677
SET PKE=set_your_Public_Key_for_Encryption
SET PKD=set_your_Private_Key_for_Decryption
SET MaxLPath=F:\Oracle\Middleware\EPMSystem11R1\products\Essbase\eas\storage\mxlscripts\%USER%
SET EADMaxl=%MaxLPath%\%1
Вся информация сохранится в логе, имя файла которого задается переменной EXECLOG.
SET EXECLOG=AutoStartMaxL-%1.log
SET RunMaxl=AutoStartMaxL.mxl
SET CurrDir=%CD%

echo Started: %date% @ %time% > %CurrDir%\%EXECLOG%
Поскольку в консоли вход и подключение производить не нужно, а внешним скриптом - необходимо, добавляем строки входа (login) и завершения работы (logout и exit).
Rem - Generate MaxL Script - Start
echo login '%USER%' '%PASSWORD%' on '%SERVER%'; > %CurrDir%\%RunMaxl%
Сам скрипт считываем из исходного файла на сервере.
Rem - Read original MaxL
For /F "eol=; delims=/" %%i In (%EADMaxl%) Do (
    echo %%i ) >>  %CurrDir%\%RunMaxl%

echo logout; >> %CurrDir%\%RunMaxl%
echo exit; >> %CurrDir%\%RunMaxl%
Rem - Generate MaxL Script - Finish

Rem Set Essbase Env
call %ESSSETENV%
Сам скрипт запускаем в шифрованном виде. 
Rem Encrypt MaxL Script
essmsh -E %CurrDir%\%RunMaxl% %PKE% > nul
Rem Del Original MaxL Script
del %CurrDir%\%RunMaxl% > nul
Rem Run Encrypted MaxL Script with LOG
essmsh -D %CurrDir%\%RunMaxl%s %PKD% >> %CurrDir%\%EXECLOG%

echo ... >>  %CurrDir%\%EXECLOG%
echo Script: >>  %CurrDir%\%EXECLOG%
For /F "eol=; delims=/" %%i In (%CurrDir%\%RunMaxl%s) Do (
    echo %%i ) >>  %CurrDir%\%EXECLOG%
echo ... >>  %CurrDir%\%EXECLOG%

Rem Del Encrypted MaxL Script
del %CurrDir%\%RunMaxl%s >> %CurrDir%\%EXECLOG%

echo Finished: %date% @ %time%  >> %CurrDir%\%EXECLOG%
Добавляем в расписание (Task Scheduler) задачу на выполнение нашего bat-файла с параметром - именем MaxL скрпита.
 


Комментариев нет:

Отправить комментарий