114 lines
4.9 KiB
Bash
114 lines
4.9 KiB
Bash
#!/bin/bash
|
|
|
|
# Включаем трассировку (вывод каждой команды перед ее выполнением) для максимальной отладки
|
|
#set -x
|
|
|
|
BASE_DIR="/opt/1cv8/x86_64"
|
|
SYM_LINK="${BASE_DIR}/current"
|
|
|
|
echo "=== DEBUG: Starting environment checks ==="
|
|
echo "Current user: $(whoami)"
|
|
|
|
LATEST_VERSION=$(ls -d ${BASE_DIR}/8.* 2>/dev/null | sort -V | tail -n 1)
|
|
# Очищаем от возможных скрытых символов возврата каретки \r
|
|
LATEST_VERSION=$(echo "$LATEST_VERSION" | tr -d '\r')
|
|
|
|
if [ -z "$LATEST_VERSION" ]; then
|
|
echo "Ошибка: В каталоге ${BASE_DIR} не найдено установленных версий 1С (папок вида 8.x.x.x)."
|
|
exit 1
|
|
fi
|
|
|
|
echo "=== DEBUG: Latest version found: $LATEST_VERSION ==="
|
|
|
|
if [ ! -L "$SYM_LINK" ] || [ "$(readlink -f "$SYM_LINK" | tr -d '\r')" != "$LATEST_VERSION" ]; then
|
|
echo "Предупреждение: Ссылка 'current' отсутствует или указывает на старую версию."
|
|
echo "Обновление ссылки 'current' -> $LATEST_VERSION..."
|
|
|
|
ln -sfn "$LATEST_VERSION" "$SYM_LINK"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "Ссылка 'current' успешно обновлена."
|
|
if systemctl is-active --quiet ras-current.service; then
|
|
echo "Перезапуск службы ras-current для применения новой версии..."
|
|
systemctl restart ras-current.service
|
|
fi
|
|
else
|
|
echo "Ошибка: Не удалось обновить символьную ссылку. Запустите скрипт через sudo."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Отлично: Ссылка 'current' уже актуальна."
|
|
fi
|
|
|
|
# Проверяем, существует ли физически утилита rac по ссылке current
|
|
RAC_PATH="${SYM_LINK}/rac"
|
|
RAC_PATH=$(echo "$RAC_PATH" | tr -d '\r')
|
|
|
|
echo "=== DEBUG: Checking RAC path: $RAC_PATH ==="
|
|
if [ ! -f "$RAC_PATH" ]; then
|
|
echo "КРИТИЧЕСКАЯ ОШИБКА: Файл $RAC_PATH не найден на диске!"
|
|
ls -la "$SYM_LINK"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -x "$RAC_PATH" ]; then
|
|
echo "КРИТИЧЕСКАЯ ОШИБКА: Файл $RAC_PATH найден, но у него нет прав на выполнение!"
|
|
chmod +x "$RAC_PATH"
|
|
fi
|
|
|
|
CLUSTER_ID=$($RAC_PATH cluster list 2>/dev/null | grep cluster | head -n 1 | awk '{print $3}')
|
|
CLUSTER_ID=$(echo "$CLUSTER_ID" | tr -d '\r')
|
|
|
|
if [ -z "$CLUSTER_ID" ]; then
|
|
echo "Ошибка: Не удалось связаться с утилитой rac или найти запущенный кластер."
|
|
echo "Проверяем статус службы ras-current напрямую:"
|
|
systemctl status ras-current.service
|
|
exit 1
|
|
fi
|
|
|
|
echo "=== DEBUG: Connected to cluster UUID: $CLUSTER_ID ==="
|
|
|
|
DB_NAME=$1
|
|
DB_PASSWORD=$2
|
|
|
|
# Очищаем параметры от скрытых переносов
|
|
DB_NAME=$(echo "$DB_NAME" | tr -d '\r')
|
|
DB_PASSWORD=$(echo "$DB_PASSWORD" | tr -d '\r')
|
|
|
|
if [ -z "$DB_NAME" ]; then
|
|
set +x # Отключаем отладку на время ввода, чтобы не светить текст на экране
|
|
read -p "Введите имя базы данных (для 1С и pgsql): " DB_NAME
|
|
set -x
|
|
DB_NAME=$(echo "$DB_NAME" | tr -d '\r')
|
|
if [ -z "$DB_NAME" ]; then
|
|
echo "Ошибка: Имя базы не может быть пустым."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$DB_PASSWORD" ]; then
|
|
set +x # Отключаем отладку, чтобы пароль не напечатался в логах терминала
|
|
read -s -p "Введите пароль пользователя СУБД (postgres): " DB_PASSWORD
|
|
echo ""
|
|
set -x
|
|
DB_PASSWORD=$(echo "$DB_PASSWORD" | tr -d '\r')
|
|
if [ -z "$DB_PASSWORD" ]; then
|
|
echo "Ошибка: Пароль не может быть пустым."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "Имя базы данных: $DB_NAME"
|
|
echo "Запуск создания базы данных $DB_NAME..."
|
|
|
|
# Полностью убираем переменную из начала строки для теста и вызываем напрямую через жесткий путь к current
|
|
/opt/1cv8/x86_64/current/rac infobase create --cluster="$CLUSTER_ID" --name="$DB_NAME" --dbms=PostgreSQL --db-server="10.2.0.2" --db-name="$DB_NAME" --db-user="postgres" --db-pwd="$DB_PASSWORD" --locale=ru_RU --create-database --license-distribution=allow
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "Успех! База данных '$DB_NAME' успешно создана в 1С и PostgreSQL."
|
|
else
|
|
echo "Ошибка при создании базы. Проверьте правильность пароля СУБД и логи 1С."
|
|
fi
|
|
|
|
# Отключаем режим трассировки в конце работы
|
|
#set +x |