我在ec2实例上安装了一个Oracle DB,并且我想在该服务器上运行脚本,以便每当我将脚本放入s3存储桶时,代码管道就会触发并将脚本部署到部署组中的实例。 我的s3存储桶版本控制已启用,我的源是s3,部署是代码deploy
但是我的shell脚本由于权限错误而不断失败,sqlplus需要该脚本以oracle用户身份运行,但它给了我以下错误!
下面是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脚本?
答案 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