Не удалось создать каталог «/home/<user>/.ssh».когда бегут от оракула - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть простой скрипт передачи файлов bash. Когда этот скрипт запускается непосредственно с сервера базы данных Solaris, он успешно выполняется и передает файл на удаленный сервер. Но когда тот же сценарий выполняется через задание Oracle, он завершается ошибкой со следующим сообщением об ошибке.

  • Я нахожу это сообщение в выходном столбце таблицы all_scheduler_job_run_details.

    "Could not create directory '/home/user/.ssh'.
    Host key verification failed.
    Couldn't read packet: Connection reset by peer"
    
  • Однако /home/user/.ssh уже присутствует и подключение к удаленному серверу без пароля.

    v_local_dir=/u12/dw/temp
    v_file_name=devcode_test_file
    v_remote_dir=upload
    v_usr=devcode
    v_server=sftp1.umbrella.com
    v_port=2222
    
    v_cmd="cd ${v_remote_dir}
    put ${v_local_dir}/${v_file_name}"
    
    echo "Executing sftp command"
    echo "Command is ${v_cmd}"
    
    echo "${v_cmd}" | sftp -oPort=${v_port} ${v_usr}@${v_server}
    

Oracle создает программный код

  dbms_scheduler.create_program
                  (
                  program_name=>'USER.PROG_DEVCODE',
                  program_action=> '/u12/dw/sftp_to_remote.sh',
                  program_type=>'EXECUTABLE',
                  number_of_arguments=>1, 
                  comments => 'push files',
                  enabled=>FALSE
                  ) ;

  dbms_scheduler.enable 'DW_USER_REPORT.PROG_PUSH_FILE_TO_DEVCODE');

Программа создания рабочих мест Oracle

declare

  p_job_name varchar2(500) := 'USER.JOB_PROG_DEVCODE';
  p_command varchar2(500) := 'PROG_DEVCODE';
--  p_args := ''
  p_type varchar2(500) := 'PROGRAM';
  p_wait_result number := 1;

begin


  DBMS_SCHEDULER.CREATE_JOB (
        p_job_name --               IN VARCHAR2,
      , p_command --program_name            IN VARCHAR2,
      , start_date => NULL
      , repeat_interval =>
      , end_date => NULL
      , job_class => 'DEFAULT_JOB_CLASS'
      , enabled => FALSE
      , auto_drop => TRUE
      , comments => NULL
      , job_style => 'REGULAR'
    );

    DBMS_SCHEDULER.set_attribute(
      p_job_name
    , 'credential_name'
    , 'USER.ORACLE_OS_CREDENTIAL'
  );

  DBMS_SCHEDULER.enable(
      p_job_name
  );

end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...