diff --git a/f7hpb.sh b/f7hpb.sh index 6e3adfa..9e2f018 100644 --- a/f7hpb.sh +++ b/f7hpb.sh @@ -1,7 +1,7 @@ #!/bin/bash # Установка F7_HPB (signaling, конфиг, systemd). Запускается на сервере HPB. -# Использование: ./f7hpb.sh [/path/to/f7cloud-install.env] -# Переменные можно передать через env-файл или ввести в диалоге, если не заданы. +# Использование: ./f7hpb.sh [/path/to/f7cloud-install.env] [KEY=value ...] +# Переменные: из env-файла, из аргументов KEY=value (переопределяют файл), или ввод в диалоге. set -e ROLE="f7hpb" @@ -33,8 +33,19 @@ get_var_optional() { fi } -# Путь к env-файлу: аргумент скрипта или запрос +# Аргументы: 1-й — путь к env-файлу, остальные — KEY=value (переменные переопределяют env-файл) ENV_FILE="${1:-}" +shift 2>/dev/null || true +CLI_ARGS=("$@") + +# Применяем KEY=value из аргументов (чтобы ENV_FILE мог быть передан как ENV_FILE=path) +for arg in "${CLI_ARGS[@]}"; do + if [[ "$arg" == *=* ]]; then + export "$arg" + [[ "$arg" == ENV_FILE=* ]] && ENV_FILE="${arg#ENV_FILE=}" + fi +done + get_var ENV_FILE "Путь к файлу конфигурации (например /path/to/f7cloud-install.env)" if [ ! -f "$ENV_FILE" ]; then @@ -44,7 +55,12 @@ fi # shellcheck source=/dev/null set -a && source "$ENV_FILE" && set +a -# Переменные из env или диалог, если не переданы +# Аргументы KEY=value переопределяют переменные из env-файла +for arg in "${CLI_ARGS[@]}"; do + [[ "$arg" == *=* ]] && export "$arg" +done + +# Переменные из env/аргументов или диалог, если не заданы get_var HPB_HASHKEY "HPB hashkey" get_var HPB_BLOCKKEY "HPB blockkey" get_var HPB_INTERNAL_SECRET "HPB internal_secret"