【发布时间】:2019-05-17 04:49:47
【问题描述】:
我在 ec2 实例上安装了一个 Oracle 数据库,我想在该服务器上运行一个脚本,这样每当我将脚本放入 s3 存储桶时,代码管道就会触发并将脚本部署到部署组中的实例。 我的 s3 存储桶版本控制已启用,我的源是 s3,部署是代码部署
但由于权限错误,我的 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 脚本?
【问题讨论】:
-
你能
sudo oracle然后运行sqlplus / as sysdba。还是给sqlplus: command not found? -
嗨,TenG 我无法执行 sudo oracle,它给了我这个错误“sudo: oracle: command not found”。
标签: oracle amazon-web-services amazon-s3 aws-code-deploy aws-codepipeline