【发布时间】:2015-08-23 08:51:24
【问题描述】:
我正在尝试使用 shell 脚本初始化 AWS EC2 实例。我的最终目标是使用 boto(python SDK)自动化这个过程,到目前为止,我有一个简单的测试脚本,它将运行一个新的 ubuntu 实例,然后使用 shell 脚本将更新和下载一些工具(工作正常)但是然后我尝试让脚本创建一个文件夹,创建一个文件并最终运行 AWS cli 命令以从 S3 存储桶下载文件。
创建实例后,我可以 ssh 进入并运行创建文件夹、文件并从存储桶下载文件的命令,但是脚本不会为我执行此操作,我无法弄清楚为什么。
我的脚本如下所示:
#!/bin/bash
apt-get -y update
apt-get -y install awscli
mkdir ./test_folder
echo -e "data" > ./test_folder/test_file
aws s3 ls
出于本文的目的,我将访问密钥数据替换为“数据”,因此最终 s3 命令将不起作用,但如果有人可以帮助我理解为什么 mkdir并且 echo 命令将无法运行,我相信我可以解决其余的问题。
【问题讨论】:
-
不应该使用 sudo 权限运行 apt-get 吗?
-
将
set -x添加到脚本中,看看你得到了什么输出?apt-get行有效吗?您确定您知道在哪个目录中执行该脚本吗?使用绝对路径有什么帮助吗? -
apt-get 命令工作正常。该脚本实际上作为字符串传递到 python 中的变量中,然后在初始化时使用该语法将其作为 sh 脚本调用。我试过绝对路径,结果是一样的。我试过
set -x,但什么也没发生。 -
“什么都没发生”是什么意思?使用
set -x,您应该捕获stderr 并检查打印的内容。另外,我建议您逐行调试。 -
同意,如果“什么都没发生”,那么你的问题就更大了。尝试像
#!/bin/bash -x这样的第一行。也许这会有所帮助。祝你好运。
标签: bash amazon-web-services amazon-ec2 amazon-s3 boto