init
This commit is contained in:
		
						commit
						1637cbdd96
					
				
					 4 changed files with 231 additions and 0 deletions
				
			
		
							
								
								
									
										77
									
								
								deploy
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										77
									
								
								deploy
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,77 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
# Парсинг аргументов командной строки
 | 
			
		||||
while [ $# -gt 0 ]; do
 | 
			
		||||
    case $1 in
 | 
			
		||||
        --ssh-host) SSH_HOST="$2"; shift 2 ;;
 | 
			
		||||
        --ssh-port) SSH_PORT="$2"; shift 2 ;;
 | 
			
		||||
        --ssh-user) SSH_USER="$2"; shift 2 ;;
 | 
			
		||||
        --deploy-path) DEPLOY_PATH="$2"; shift 2 ;;
 | 
			
		||||
        --private-key) USER_PRIVATE_KEY="$2"; shift 2 ;;
 | 
			
		||||
        *) echo "❌ Ошибка: Неизвестный параметр: $1"; exit 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# Функция для проверки наличия аргумента
 | 
			
		||||
check_arg() {
 | 
			
		||||
    arg_name="$1"
 | 
			
		||||
    arg_value="$2"
 | 
			
		||||
    if [ -z "$arg_value" ]; then
 | 
			
		||||
        echo "❌ Ошибка: Не указан обязательный параметр --$arg_name"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Проверка каждого аргумента отдельно
 | 
			
		||||
check_arg "ssh-host" "$SSH_HOST"
 | 
			
		||||
check_arg "ssh-user" "$SSH_USER"
 | 
			
		||||
check_arg "deploy-path" "$DEPLOY_PATH"
 | 
			
		||||
check_arg "private-key" "$USER_PRIVATE_KEY"
 | 
			
		||||
 | 
			
		||||
# Проверка формата SSH-порта (если указан)
 | 
			
		||||
if [ -n "$SSH_PORT" ]; then
 | 
			
		||||
    if ! echo "$SSH_PORT" | grep -Eq '^[0-9]+$' || [ "$SSH_PORT" -lt 1 ] || [ "$SSH_PORT" -gt 65535 ]; then
 | 
			
		||||
        echo "❌ Ошибка: Порт должен быть числом от 1 до 65535"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
else
 | 
			
		||||
    SSH_PORT=22  # Значение по умолчанию
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Проверка формата приватного ключа
 | 
			
		||||
if ! echo "$USER_PRIVATE_KEY" | grep -q "PRIVATE KEY"; then
 | 
			
		||||
    echo "❌ Ошибка: Указанный приватный ключ не содержит 'PRIVATE KEY' (возможно, некорректный формат)"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Создаем папку .ssh, если её нет
 | 
			
		||||
mkdir -p ~/.ssh
 | 
			
		||||
chmod 700 ~/.ssh
 | 
			
		||||
 | 
			
		||||
# Сохраняем приватный ключ
 | 
			
		||||
echo "$USER_PRIVATE_KEY" > ~/.ssh/id_rsa
 | 
			
		||||
chmod 600 ~/.ssh/id_rsa
 | 
			
		||||
 | 
			
		||||
# Добавляем хост в known_hosts
 | 
			
		||||
echo "🔑 Добавляем $SSH_HOST в known_hosts..."
 | 
			
		||||
ssh-keyscan -p "$SSH_PORT" -H "$SSH_HOST" > ~/.ssh/known_hosts 2>/dev/null || {
 | 
			
		||||
    echo "❌ Ошибка: Не удалось добавить хост $SSH_HOST в known_hosts"
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Запускаем ssh-agent и добавляем ключ
 | 
			
		||||
echo "🔐 Запускаем ssh-agent..."
 | 
			
		||||
eval "$(ssh-agent -s)" >/dev/null
 | 
			
		||||
ssh-add ~/.ssh/id_rsa 2>/dev/null || {
 | 
			
		||||
    echo "❌ Ошибка: Не удалось добавить SSH-ключ в агент (проверьте ключ и пароль)"
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Деплой через rsync
 | 
			
		||||
echo "🚀 Начинаем деплой в $SSH_USER@$SSH_HOST:$DEPLOY_PATH..."
 | 
			
		||||
rsync -avz --progress -e "ssh -p $SSH_PORT -i ~/.ssh/id_rsa" public/ "$SSH_USER@$SSH_HOST:$DEPLOY_PATH" || {
 | 
			
		||||
    echo "❌ Ошибка: Деплой не удался (проверьте путь, права или подключение)"
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
echo "✅ Деплой успешно завершен!"
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue