Bash - захватить вывод и поместить его в определенное место в файле - PullRequest
0 голосов
/ 29 января 2019

У меня есть скрипт Python, генерирующий ключ подписи AWS для S3.Он генерирует два значения:

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

Оба действительны в течение 7 дней.Я хочу запускать этот скрипт каждые пять дней, используя cron внутри контейнера Docker, получить выходные данные и поместить / заменить значения в конфигурации config 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 в контейнере

1 Ответ

0 голосов
/ 29 января 2019

Предполагая, что значения хранятся в 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;
    }

В керли одинарный входной источник питания оба read с.Тогда это просто sed, используя !, потому что у вас есть стандартные косые черты в ваших данных.Двойные кавычки на sed позволяют использовать встроенные переменные - не идеально, но здесь все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...