oracle - AWS 代码管道错误:指定位置的脚本:scripts/install_dependencies 以用户身份运行 oracle 失败,退出代码为 127
问题描述
我在 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 脚本?
解决方案
问题已解决,在我更新了 shell 脚本后:
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
推荐阅读
- ios - 如何从其声明之外调用块?
- node.js - 在控制台日志中显示 gzip 而不使用文本文件
- modal-dialog - 清晰全屏模式
- c++ - 为什么 Valgrind 在这个实现中会报告内存泄漏?
- ios - 如何在 swift 4、iOS 11.3、xcode 9 中将已编码的 json 数据(作为字符串)编码为另一个 json?
- c# - ModelState.IsValid 为 False,因为隐藏了一些必填字段验证器
- python - ctypes 用户输入以流式传输到另一个程序
- singlestore - 如何将 memsql 中的端口从 9000 更改为其他端口
- javascript - WebRTC 从 canvas jams 发送流
- ios - 快速禁用“仅适用于 iOS 11.0 或更高版本”?