diff --git a/recuperation_config.sh b/recuperation_config.sh new file mode 100644 index 0000000..f7c32b1 --- /dev/null +++ b/recuperation_config.sh @@ -0,0 +1,88 @@ +#!/bin/bash + +# Configuration des variables +ORG="SysConf" +BASE_URL="https://sysconfgit.linexos.eu" +API_URL="$BASE_URL/api/v1" +REPO_NAME=$(hostname) +REPO_URL="$BASE_URL/$ORG/$REPO_NAME.git" +REPO_PATH="/etc/gitea/ConfigSysRepo" # Chemin local générique pour cloner les dépôts +BRANCH="main" +TOKEN="c4be311f3abf82ee98e3a0412fac4c9c7d233eb2" +REPO_URL_TOKEN="https://$TOKEN@sysconfgit.linexos.eu/$ORG/$REPO_NAME.git" +HOSTNAME=$(hostname) # Nom de la machine + +echo "Début du script pour $HOSTNAME" + +# Vérifie si le dépôt existe déjà en utilisant l'API de Gitea +response=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token $TOKEN" "$API_URL/repos/$ORG/$REPO_NAME") + +if [ "$response" -ne 200 ]; then + echo "Le dépôt $REPO_NAME n'existe pas. Création du dépôt..." + curl -s -X POST -H "Authorization: token $TOKEN" \ + -H "Content-Type: application/json" \ + -d "{\"name\": \"$REPO_NAME\", \"private\": false}" \ + "$API_URL/orgs/$ORG/repos" + echo "Dépôt $REPO_NAME créé." +else + echo "Le dépôt $REPO_NAME existe déjà." +fi + +# Vérifie si le répertoire du dépôt existe localement et le clone si nécessaire +if [ ! -d "$REPO_PATH/.git" ]; then + echo "Le dépôt n'existe pas localement. Clonage du dépôt..." + git clone "$REPO_URL_TOKEN" "$REPO_PATH" + cd "$REPO_PATH" + + # Initialisation du dépôt local et création de la branche main + echo "Initialisation du dépôt local..." + git checkout -b $BRANCH + touch .gitkeep # Ajoute un fichier pour initialiser le dépôt + git add .gitkeep + git commit -m "Initial commit" + git push --set-upstream origin $BRANCH +else + echo "Le dépôt existe déjà localement." + cd "$REPO_PATH" + git checkout $BRANCH || git checkout -b $BRANCH +fi + +# Configurer les informations utilisateur Git pour le dépôt local si elles ne sont pas déjà configurées +if ! git config user.name &>/dev/null; then + git config user.name "admin-linexos" + git config user.email "technique@linexos.fr" +fi + +# Tente de mettre à jour le dépôt local en cas de modifications distantes +git pull --rebase origin $BRANCH + +# Lecture des chemins des fichiers depuis le fichier de configuration +CONFIG_FILE="/etc/gitea/path_config" # Chemin du fichier de configuration + +if [ ! -f "$CONFIG_FILE" ]; then + echo "Le fichier de configuration $CONFIG_FILE n'existe pas." + exit 1 +fi + +echo "Copie des fichiers de configuration en maintenant l'arborescence..." + +while IFS= read -r file; do + if [ -f "$file" ]; then + DEST_DIR="$REPO_PATH/$(dirname "$file")" + mkdir -p "$DEST_DIR" + echo "Copie de $file vers $DEST_DIR" + cp "$file" "$DEST_DIR" + else + echo "Le fichier $file n'existe pas: $file" + fi +done < "$CONFIG_FILE" + +# Ajout de toutes les modifications +git add -A + +# Git operations +git commit -m "Mise à jour des fichiers de configuration pour $HOSTNAME" +git push origin $BRANCH +echo "Modifications poussées vers le dépôt." + +echo "Fin du script."