Скрипт для добавления переменных в конфигурацию .env

Цель данного скрипта — легко, при помощи одной команды добавлять новые переменные в .env файл. Кроме того, есть встроенная возможность генерировать в качестве параметр переменной пароли. Данный скрипт является частью системы для автоматической конфигурации сервера.

Основные этапы:

  1. Проверяем, указаны ли параметры запуска скрипта. Если первый параметр (имя переменной) не указан, завершаем скрипт. Если не указан второй параметр (значение переменной), генерируем в качестве значения новый пароль.
  2. Проверяем, существует ли .env файл. Если нет, создаем его.
  3. Проверяем, существует ли уже переменная в .env файле. Если да, то обновляем ее значение. Если нет, создаем новую переменную.

Полный код скрипта приведен ниже:

Bash
#!/bin/bash

if [ -z "$1" ]; then
  echo "Use: $0 VARIABLE_NAME (VALUE)"
  exit 1
fi

VARIABLE_NAME=$1
ENV_FILE="/data/secrets/$SERVER_DOMAIN/$SERVER_DOMAIN.env"

# Password gen: 20chars,0-9,a-z
generate_random_password() {
  #tr -dc 'a-z0-9' </dev/urandom | head -c 20
  pwgen -s 20 1
}

trap 'echo -e "\033[31menv-gen.sh: Something went wrong\033[0m"; exit 1' ERR
set -e

export DEBIAN_FRONTEND=noninteractive

echo "If the second parameter is specified, use it as the value of the variable..."
if [ -n "$2" ]; then
  VALUE=$2
else
  VALUE=$(generate_random_password)
fi

echo "Creating .env file if it doesn't exist..."
if [ ! -f "$ENV_FILE" ]; then
  echo "# Creating directories if they don't exist..."
  mkdir -p "$(dirname "$ENV_FILE")"
  touch "$ENV_FILE"
fi

echo "Update or add a variable to the .env file"
if grep -q "^$VARIABLE_NAME=" "$ENV_FILE"; then
  echo "The variable exists, update its value..."
  sed -i "s/^$VARIABLE_NAME=.*/$VARIABLE_NAME=$VALUE/" "$ENV_FILE"
else
  echo "The variable does not exist, add it to the file..."
  echo "$VARIABLE_NAME=$VALUE" >> "$ENV_FILE"
fi

trap - ERR
echo "Variable $VARIABLE_NAME successfully updated/added to $ENV_FILE"


Данный скрипт является частью нашего репозитория utils.



Если вам интересен наш проект, есть вопросы, замечания, или предложения — оставляйте комментарии или пишите на почту: checkerwars@mail.ru

Кроме того, автор проекта ищет работу. Мое резюме.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *