AWS Code Pipeline错误:脚本在指定位置:以用户oracle身份运行的脚本/ install_dependencies失败,退出代码为127

时间:2018-12-16 17:27:46

标签: oracle amazon-web-services amazon-s3 aws-code-deploy aws-codepipeline

我在ec2实例上安装了一个Oracle DB,并且我想在该服务器上运行脚本,以便每当我将脚本放入s3存储桶时,代码管道就会触发并将脚本部署到部署组中的实例。 我的s3存储桶版本控制已启用,我的源是s3,部署是代码deploy

但是我的shell脚本由于权限错误而不断失败,sqlplus需要该脚本以oracle用户身份运行,但它给了我以下错误!

enter image description here 下面是install_dependencies.sh文件中的代码:

rm -rf /oracle/backup/*
echo "oracle" | sudo -S sleep 2 && sudo su - oracle
sqlplus -s "/ as sysdba" <<EOF
whenever sqlerror exit sql.sqlcode;
set echo on;
set serveroutput on;

create table demo01 id(a number);
insert into demo01 values(1);
commit;

exit;
EOF

我的appspec文件代码:

version: 0.0
os: linux
files:
  - source: /db.dmp
    destination: /oracle/backup/
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies
      timeout: 3000
      runas: oracle

我已经在/ etc / sudoers文件中为Oracle输入了一个条目,但是也没有成功。那么,如何使用ec2的code-deploy-agent以非root用户身份运行Shell脚本?

1 个答案:

答案 0 :(得分:0)

问题解决了,我更新了外壳程序脚本后:

echo "oracle" | sudo -S sleep 2 && sudo su - oracle -c 'sqlplus / as sysdba'  <<EOF
whenever sqlerror exit sql.sqlcode;
set echo on;
set serveroutput on;
create table demo02 (a number);
insert into demo02 values(1);
commit;
exit;
EOF