【问题标题】:Bash - Grab the output and put it in the particular place in the fileBash - 抓取输出并将其放在文件中的特定位置
【发布时间】:2019-01-29 22:55:28
【问题描述】:

我有 python 脚本为 S3 生成 AWS 签名密钥。它生成两个值:

GZkXNl6Leat71ckcwfxGuiHxt9fnkj47F1SbVjRu/t0=
20190129/eu-west-2/s3/aws4_request

两者的有效期均为 7 天。我想要的是在 Docker 容器中使用 cron 每五天运行一次该脚本,获取输出并在 Nginx 配置中放置/替换值 配置:

  server {
    listen 80;
    aws_access_key 'AKIDEXAMPLE';
    aws_signing_key FIRST_VALUE;
    aws_key_scope SECOND_VALUE;
    aws_s3_bucket s3_bucket_name;

    location / {
    aws_sign;
      proxy_pass http://s3_bucket_name.s3.amazonaws.com;
    }

然后在容器中重启nginx

【问题讨论】:

  • 有什么问题?你知道如何调用python吗?你知道如何让它写输出吗?您知道如何捕获该输出吗?你知道如何修改 nginx 配置吗?你知道如何编辑脚本吗?结合这些问题的答案(可能还有更多),你就完成了。
  • 有问题。 Python 脚本在输出中给出了这两行。我需要将它们放入上面的 Nginx 配置中。
  • 啊,所以您只是希望有人为您编写脚本,而您实际上并没有具体的问题。我想说问题中唯一困难的部分是说服 cron 每 5 天运行一次。它在月底变得棘手,如果您允许自己使用0/5 形式的日期说明符,会容易得多。但是避免 cron 可能更容易,只需执行 while sleep 432000; do cmd; done 其中 cmd 是执行您想要的操作的命令。
  • 是的,William 我要求为我写它,你对 cron 的看法是对的,但它也应该适用于 [ $(( $(( date +%-j - 1 )) % 5 )) == 0]。睡眠是我会尝试的另一种选择。

标签: bash amazon-web-services nginx


【解决方案1】:

假设值存储在val_file,将它们放入nginx.conf,这个简单的解决方案应该这样做 -

$: cat script
#! /bin/env bash
{ read -r val1    # read the first line
  read -r val2    # read the second line
  sed -i "s!FIRST_VALUE!$val1!;
          s!SECOND_VALUE!$val2!;
  " nginx.conf
} < val_file

$: script
$: cat nginx.conf
  server {
    listen 80;
    aws_access_key 'AKIDEXAMPLE';
    aws_signing_key GZkXNl6Leat71ckcwfxGuiHxt9fnkj47F1SbVjRu/t0=;
    aws_key_scope 20190129/eu-west-2/s3/aws4_request;
    aws_s3_bucket s3_bucket_name;

    location / {
    aws_sign;
      proxy_pass http://s3_bucket_name.s3.amazonaws.com;
    }

卷曲使单个输入同时提供reads。然后它只是一个sed,使用!,因为您的数据中有标准的正斜杠。 sed 上的双引号允许嵌入变量 - 不理想,但在这里似乎还可以。

【讨论】:

  • 成功了,谢谢。但是我发现我需要使用 cron 运行它,其中 nginx.conf 中的值将包含以前的(过期的)签名密钥。所以我会尝试在 aws_signing_key 和 ";" 之前替换值
  • 然后试试sed -i 's! aws_signing_key .*; *$! aws_signing_key '$val1';!; s! aws_key_scope .*; *$! aws_key_scope '$val2';!;' nginx.conf :) `
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
相关资源
最近更新 更多