【问题标题】:Shell Script for AWS EC2 initAWS EC2 初始化的 Shell 脚本
【发布时间】: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


【解决方案1】:

我想通了,谢谢你的帮助。对于非本机命令,我需要使用su 'user' -c 'command' 指定用户,这允许我运行pip install botoaws s3 ls 之类的命令。希望如果有人遇到这个问题,这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2019-05-17
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多