Реализация на отдельных двух машинах с протестированным взаимодействием по проверке сообщений
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# 1. Безопасная загрузка .env: убираем комментарии, удаляем \r (Windows-переносы) и делаем export
|
||||
export $(grep -v '^#' .env | sed 's/\r$//' | xargs)
|
||||
|
||||
echo "=== 1. Параметры из .env ==="
|
||||
grep -E '^(HAN_PG_HOST|HAN_PG_PORT|KEYCLOAK_DB_)' .env | grep -v PASSWORD || echo "Переменные не найдены!"
|
||||
|
||||
# 2. Проверка TCP (используем переменные, а не хардкод)
|
||||
echo -e "\n=== 2. Проверка TCP (${HAN_PG_HOST}:${HAN_PG_PORT}) ==="
|
||||
if command -v nc &> /dev/null; then
|
||||
nc -zv "${HAN_PG_HOST}" "${HAN_PG_PORT}" || echo "❌ Не удалось подключиться по TCP"
|
||||
else
|
||||
echo "⚠️ Утилита nc не найдена, пропускаем проверку TCP"
|
||||
fi
|
||||
|
||||
# 3. Проверка подключения psql
|
||||
echo -e "\n=== 3. Проверка подключения к БД ==="
|
||||
|
||||
# ВАЖНО: Передаем пароль через переменную окружения, чтобы скрипт не зависал!
|
||||
# Если KEYCLOAK_DB_PASSWORD пуст, psql все равно спросит его вручную.
|
||||
export PGPASSWORD="${KEYCLOAK_DB_PASSWORD:-}"
|
||||
|
||||
# Проверяем, установлен ли psql
|
||||
if ! command -v psql &> /dev/null; then
|
||||
echo "❌ Утилита psql не найдена на хост-машине. Установите postgresql-client."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Выполняем запрос. Используем переменную порта и добавляем fallback для sslrootcert, если он не задан
|
||||
psql "host=${HAN_PG_HOST} port=${HAN_PG_PORT} dbname=han_chat user=${KEYCLOAK_DB_USERNAME} sslmode=verify-full sslrootcert=${PG_CA_HOST_PATH:-}" \
|
||||
-c "SELECT current_user, current_schema(); SHOW search_path;"
|
||||
|
||||
# Очищаем пароль из окружения после выполнения (хорошая практика)
|
||||
unset PGPASSWORD
|
||||
Reference in New Issue
Block a user