CftClub.ru
Клуб специалистов ЦФТ-Банк

выполнение команды ОС на сервере БД

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеВт Сен 24, 2013 09:08   выполнение команды ОС на сервере БД Ответить с цитатой
Полезность: Нет оценки
Добрый день!

В общем, ничего не предвещало беды, но тут встал вопрос - а возможно ли сие?
сервак стоит на линуксе, и на до из кода операций вызывать bash скрипты.
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеВт Сен 24, 2013 10:02   Re: выполнение команды ОС на сервере БД Ответить с цитатой
Полезность: 3
Да.

Примерчик:
Код:

declare
  root_dir   const varchar2(200)   := stdio.get_env('FIO_ROOT_DIR');
  root_bin    const varchar2(2000)    := root_dir||slash||'bin';
  sh_file    const varchar2(2000)     := 'script_zip.sh';
  cmds     const varchar2(2000)     := root_bin || slash || sh_file ||' % % %';
begin
 ret := stdio.run(cmds,
         p_archive_path||p_archive_filename,
         p_archive_path||file_arch_descr_name,
         p_archive_path||file_arch_log_name,
         null,null,null,null,null,null,null,false);
                  
  if ret != 0 then
   pragma error('Ошибка запуска скрипта. Код ошибки '||to_char(ret));
  end if;
end;

e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеСр Сен 25, 2013 03:54   не получается, Ответить с цитатой
Полезность: Нет оценки
Код:
  root_dir   const varchar2(200)   := stdio.get_env('FIO_ROOT_DIR');
  root_bin    const varchar2(2000)    := root_dir || '/' || 'scripts';
  sh_file    const varchar2(2000)     := 'test.sh';
  cmds     const varchar2(2000) := root_bin || '/' || sh_file;
  ret integer;
begin
 stdio.put_line_buf(root_dir);   
 stdio.put_line_buf(cmds);

 ret := stdio.run(cmds, null, null, null, null, null, null, null, null, null, null, false);

 stdio.put_line_buf('Результат ' || ret);
 if ret != 0 then
  pragma error('Ошибка запуска скрипта. Код ошибки '||to_char(ret));
 end if;
end;


Результат
Код:
/u/utlfile/testing/ibs
/u/utlfile/testing/ibs/scripts/test.sh
Результат -6512


Доступы все дал, захожу через консоль под пользователем с которого виден FIO, выполняю скрипт простой, все работает.
через операцию не хочет...
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеСр Сен 25, 2013 04:14    Ответить с цитатой
Полезность: Нет оценки
Кажись дирректории выше FIO_ROOT_DIR он не пущает, попробуй скрипт в пределах этой дирректории.
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеСр Сен 25, 2013 04:22    Ответить с цитатой
Полезность: Нет оценки
пробовал, не получается

Код:
/u/utlfile/testing/ibs
/u/utlfile/testing/ibs/test.sh
Результат -6512
tsktalk
Участник со стажем


Вступление в Клуб: 27.09.2007
СообщениеСр Сен 25, 2013 06:40    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
Кажись дирректории выше FIO_ROOT_DIR он не пущает, попробуй скрипт в пределах этой дирректории.


посмотрите настройка в профилях FIO_EXE_DIR
ну и фай лик в апгрейде тя (UPGR7311\TOOLS\FIO\fio.txt)
Цитата от туда

Описание настроек FIO (таблица profiles):
.....

Можно добавлять другие команды FIO в виде FIO_<Identifier>_CMD,
а также формировать переменные окружения внешнего процесса в виде
FIO_<Identifier>, значения этих переменных окружения будут доступны
при запуске shell-команд. К списку команд и переменных окружения
собственномго профиля добавляется список команд и переменных окружения
умолчательного профиля DEFAULT.
....
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеСр Сен 25, 2013 06:43    Ответить с цитатой
Полезность: Нет оценки
так вызываю
stdio.run(cmds, null, null, null, null, null, null, null, null, null, null, false);

т.е. без всяких интерпритаций команды, что есть то по факту запускается.

Тогда не надо синонимы FIO_..._CMD настраивать
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеСр Сен 25, 2013 10:39    Ответить с цитатой
Полезность: 1
А если так в теле
res := stdio.run('FIO_SH',,,);
А в админе доступа в профиле запускающего пользователя
создать свойство FIO_SH = /u/utlfile/testing/ibs/test.sh
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеСр Сен 25, 2013 11:23    Ответить с цитатой
Полезность: 1
Alkov пишет:
А если так в теле
res := stdio.run('FIO_SH',,,);
А в админе доступа в профиле запускающего пользователя
создать свойство FIO_SH = /u/utlfile/testing/ibs/test.sh


Только не FIO_SH, а FIO_SH_CMD.
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеЧт Сен 26, 2013 02:21    Ответить с цитатой
Полезность: Нет оценки
Господа, огромное спасибо!
через FIO_..._CMD
получилось.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru