#!/usr/bin/env bash # Copyright (C) 2026 Дмитрий Алифатов # Лицензия: GNU GPL v3 или новее # Скрипт поставляется БЕЗ ГАРАНТИЙ любого рода («как есть»). # Вы можете свободно изменять и распространять его, сохраняя эту лицензию. #разбиваем аргументы на массив, аргументы в кавычках могут содержать пробелы bash_args="$@" eval "set -- $bash_args" args=("$@") #проходимся по массиву аргументов, выделяем ключи и значения for ((i = 0; i < ${#args[@]} - 1; i++)); do key="${args[i]}" case $key in "--password" | "-p") password="${args[i+1]}" ;; "--account" | "-u") user="${args[i+1]}" ;; "--domain" | "-c") domain="${args[i+1]}" ;; "--orgunits" | "-ou") orgunits="${args[i+1]}" ;; "--host" | "-d") host_name="${args[i+1]}" #приводим имя хоста к нижнему регистру, обрезаем домен, если он есть host_name=${host_name%%.*} host_name=$(echo $host_name | tr '[:upper:]' '[:lower:]') ;; "--repo") repo="${args[i+1]}" ;; esac done #выводим аргументы для отладки, экранируем пароль bash_args="$@" hidden_password=$(echo $password | tr '[:print:]' '*') echo "[$(date +'%Y-%m-%d %H:%M')] аргументы вызова: ${bash_args/$password/$hidden_password}" >&2 #Задать hostname в формате FQDN echo "[$(date +'%Y-%m-%d %H:%M')] задаем hostname: $host_name.$domain" >&2 hostnamectl set-hostname $host_name.$domain #Поправить файл hosts в соответствии с требованиями ALD Pro echo "[$(date +'%Y-%m-%d %H:%M')] обновляем файл /etc/hosts в соответствии с требованиями ALD Pro" >&2 cat << EOF > /etc/hosts 127.0.0.1 localhost.localdomain localhost 127.0.1.1 $(hostname) $(hostname -s) # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters EOF #Добавить репозиторий ALD Pro, если он задан if [ -n "$repo" ]; then echo "[$(date +'%Y-%m-%d %H:%M')] добавляем репозиторий aldpro" >&2 echo $repo > /etc/apt/sources.list.d/aldpro.list #Обновить Linux echo "[$(date +'%Y-%m-%d %H:%M')] выполняем обновление" >&2 sudo apt update sudo apt dist-upgrade -y -o Dpkg::Options::=--force-confnew fi #Установить ALD Pro клиент echo "[$(date +'%Y-%m-%d %H:%M')] выполняемм установку клиента ALD Pro" >&2 sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -q aldpro-client #Ввести в домен. Чтобы избежать ошибки специальных символов в пароле, формируем команду запуска через массив аргументов. cmd_args=("/opt/rbta/aldpro/client/bin/aldpro-client-installer" "--domain" "$(hostname -d)" "--account" "$user" "-p" "$password" "--host" "$(hostname -a)" "--gui" "--force" "--unattended") if [ -n "$orgunits" ]; then cmd_args+=("--orgunits" "$orgunits") fi log_command="${cmd_args[*]}" echo "[$(date +'%Y-%m-%d %H:%M')] выполняем ввод в домен командой: ${log_command/$password/$hidden_password}" >&2 "${cmd_args[@]}"