【问题标题】:Configuring s3cmd non-interactively through bash script通过 bash 脚本以非交互方式配置 s3cmd
【发布时间】:2016-07-27 20:46:23
【问题描述】:

我正在尝试配置 s3cmd。在命令行时,

s3cmd --configure 

运行向导,数据输入很简单。 现在,我想通过一个 bash 脚本来运行它。我用过:

s3cmd --configure --access_key=XXXXXXX --secret_key=XXXXXX -s --no-encrypt 

交互式向导仍然会弹出,询问我刚刚提供的参数。然后我尝试转储配置文件 (.s3cfg) 的内容并将其写入根目录中的文件,希望 s3cmd 能够读取它:

s3cmd --configure --access_key=XXXXXXX --secret_key=XXXXXX -s --no-encrypt 
--dump-config 2>&1 | tee .s3cfg

但这也没有用.. 有任何想法吗? 谢谢。

【问题讨论】:

    标签: bash amazon-s3 configuration-files s3cmd


    【解决方案1】:

    --configure 是一种交互模式,用于定义所有设置,因此一旦您打开此选项,它将带来交互问题模式。

    如果你想编写工具的配置脚本,我认为你应该直接在你的用户主目录中编辑.s3cfg(对于mac/linux)或s3cmd.ini(对于windows)并设置你想要的值设置。

    或者,您可以转储当前设置(就像您使用 --dump-config 所做的那样)进行更改并使用 s3cmd --config=<new_file> 保存

    【讨论】:

    • 我继续将配置文件转储到 /root/ 中的 .s3cfg 文件中。 S3cmd 能够直接读取它,而无需明确指向它。 s3cmd --configure --access_key=XXXXXX --secret_key=XXXX -s --no-encrypt --dump-config 2>&1 | tee /root/.s3cfg
    【解决方案2】:

    至少对于 1.1.0-beta3 版本,这对我来说效果很好:

    export AWS_ACCESS_KEY_ID=...
    export AWS_SECRET_ACCESS_KEY=...
    
    echo -e "${AWS_ACCESS_KEY_ID?}\n${AWS_SECRET_ACCESS_KEY?}\n\n\n\n\nY\ny\n" | \
      s3cmd --configure
    

    我建议手动执行一次以找出所需的输入字符串的确切顺序,然后相应地调整 echo 命令(您有 不以交互模式保存配置文件的选项)。

    希望这对某人有所帮助!

    【讨论】:

    • 以这种方式使用变量时无需导出变量。无论如何,我会从文件中读取它们,以避免在命令行上暴露它们:s3cmd --configure < s3values.txt
    【解决方案3】:

    只需删除 --configure 选项即可。作者的命令非常正确

    s3cmd --access_key=XXXXXXX --secret_key=XXXXXX -s --no-encrypt 
    --dump-config 2>&1 | tee .s3cfg
    

    【讨论】:

      猜你喜欢
      • 2012-07-07
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      相关资源
      最近更新 更多