Guide

Nouvelles mises à jour et améliorations de Roundfleet.

Avis important

Les exemples de code et scripts fournis dans ces tutoriels sont uniquement à des fins éducatives. Roundfleet n'est pas responsable des problèmes, dommages ou vulnérabilités de sécurité qui pourraient survenir lors de l'utilisation, modification ou implémentation de ces exemples. Toujours vérifier et tester le code dans un environnement sécurisé avant de l'utiliser dans des systèmes de production.

Exécuter l'Assistant de configuration sur les appareils macOS au prochain redémarrage

Ce guide complet démontre comment déclencher l'Assistant de configuration macOS au prochain redémarrage de l'appareil, permettant la reconfiguration des appareils, l'intégration des utilisateurs et les flux de déploiement d'entreprise.

Aperçu

L'Assistant de configuration est l'assistant de configuration intégré de macOS qui guide les utilisateurs dans la configuration initiale de l'appareil. Il peut être déclenché manuellement pour divers scénarios d'entreprise :

  • Reconfiguration d'appareils : Réinitialiser les appareils à un état proche de l'usine tout en préservant les données
  • Intégration d'utilisateurs : Rationaliser la configuration des appareils pour les nouveaux employés
  • Déploiement de masse : Standardiser la configuration des appareils dans les organisations
  • Dépannage : Réinitialiser les configurations système sans effacement complet de l'appareil
  • Conformité : S'assurer que les appareils répondent aux exigences de configuration organisationnelle

Déclenchement de base de l'Assistant de configuration

Script simple pour l'Assistant de configuration

Créez un script de base pour déclencher l'Assistant de configuration au prochain redémarrage :

#!/bin/bash

# Script de déclenchement de base de l'Assistant de configuration
# Utilisation : ./declencher_assistant_config.sh

declencher_assistant_config() {
    # Vérifier si le script est exécuté en tant que root
    if [ "$(id -u)" != "0" ]; then
        echo "Erreur : Ce script doit être exécuté en tant que root"
        exit 1
    fi
    
    # Vérifier si le fichier .AppleSetupDone existe
    if [ ! -f "/private/var/db/.AppleSetupDone" ]; then
        echo "Fichier marqueur de l'Assistant de configuration non trouvé. L'Assistant de configuration pourrait déjà être programmé pour s'exécuter."
        exit 0
    fi
    
    # Supprimer le fichier .AppleSetupDone
    sudo rm /private/var/db/.AppleSetupDone
    
    if [ $? -eq 0 ]; then
        echo "L'Assistant de configuration s'exécutera au prochain redémarrage."
        echo "Veuillez redémarrer l'appareil pour commencer l'Assistant de configuration."
    else
        echo "Erreur : Impossible de supprimer le fichier marqueur de l'Assistant de configuration."
        exit 1
    fi
}

# Exécuter la fonction
declencher_assistant_config

Assistant de configuration avancé avec validation

#!/bin/bash

# Assistant de configuration avancé avec validation et journalisation
# Utilisation : ./assistant_config_avance.sh

assistant_config_avance() {
    local fichier_log="/var/log/roundfleet_assistant_config.log"
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    local fichier_config_termine="/private/var/db/.AppleSetupDone"
    local nom_ordinateur=$(scutil --get ComputerName)
    
    # Vérifier si le script est exécuté en tant que root
    if [ "$EUID" -ne 0 ]; then
        echo "Erreur : Ce script doit être exécuté en tant que root"
        exit 1
    fi
    
    # Créer le répertoire de log s'il n'existe pas
    mkdir -p /var/log
    
    # Enregistrer le début de l'opération
    echo "[$timestamp] Démarrage du déclenchement de l'Assistant de configuration sur $nom_ordinateur" >> "$fichier_log"
    
    # Vérifier la compatibilité de la version macOS
    local version_os=$(sw_vers -productVersion)
    local version_majeure=$(echo "$version_os" | cut -d. -f1)
    
    if [ "$version_majeure" -ge 14 ]; then
        echo "[$timestamp] ATTENTION : macOS $version_os détecté. Le déclenchement de l'Assistant de configuration pourrait ne pas fonctionner sur macOS 14+" >> "$fichier_log"
        echo "Attention : Ce script est pris en charge sur les versions macOS inférieures à 14. Version actuelle : $version_os"
        read -p "Voulez-vous continuer quand même ? (o/N) : " continuer_quand_meme
        if [ "$continuer_quand_meme" != "o" ] && [ "$continuer_quand_meme" != "O" ]; then
            echo "[$timestamp] Opération annulée par l'utilisateur en raison de la compatibilité de version" >> "$fichier_log"
            echo "Opération annulée."
            exit 0
        fi
    fi
    
    # Vérifier si le fichier marqueur de l'Assistant de configuration existe
    if [ ! -f "$fichier_config_termine" ]; then
        echo "[$timestamp] Fichier marqueur de l'Assistant de configuration non trouvé à $fichier_config_termine" >> "$fichier_log"
        echo "Fichier marqueur de l'Assistant de configuration non trouvé. L'Assistant de configuration pourrait déjà être programmé pour s'exécuter."
        echo "Emplacement du fichier : $fichier_config_termine"
        exit 0
    fi
    
    # Obtenir les informations du fichier avant suppression
    local info_fichier=$(ls -la "$fichier_config_termine" 2>/dev/null)
    echo "[$timestamp] Informations actuelles du fichier marqueur : $info_fichier" >> "$fichier_log"
    
    # Créer une sauvegarde du fichier marqueur
    local repertoire_sauvegarde="/var/backups/roundfleet"
    mkdir -p "$repertoire_sauvegarde"
    cp "$fichier_config_termine" "$repertoire_sauvegarde/.AppleSetupDone.sauvegarde.$(date +%Y%m%d_%H%M%S)" 2>/dev/null
    
    # Supprimer le fichier .AppleSetupDone
    rm "$fichier_config_termine"
    
    # Vérifier la suppression
    if [ ! -f "$fichier_config_termine" ]; then
        echo "[$timestamp] Fichier marqueur de l'Assistant de configuration supprimé avec succès" >> "$fichier_log"
        echo "L'Assistant de configuration a été configuré pour s'exécuter au prochain redémarrage."
        echo ""
        echo "Informations sur l'appareil :"
        echo "  Nom de l'ordinateur : $nom_ordinateur"
        echo "  Version macOS : $version_os"
        echo "  Horodatage : $timestamp"
        echo ""
        echo "Prochaines étapes :"
        echo "  1. Redémarrer l'appareil pour commencer l'Assistant de configuration"
        echo "  2. Suivre les instructions à l'écran pour configurer l'appareil"
        echo "  3. L'Assistant de configuration vous guidera à travers la langue, la région, les comptes et autres paramètres"
        echo ""
        echo "Note : Toutes les données utilisateur et applications existantes resteront intactes."
    else
        echo "[$timestamp] ERREUR : Impossible de supprimer le fichier marqueur de l'Assistant de configuration" >> "$fichier_log"
        echo "Erreur : Impossible de supprimer le fichier marqueur de l'Assistant de configuration."
        echo "Veuillez vérifier les permissions et réessayer."
        exit 1
    fi
}

# Exécuter la configuration avancée
assistant_config_avance

Gestion avancée de l'Assistant de configuration

Déclenchement conditionnel de l'Assistant de configuration

#!/bin/bash

# Déclenchement conditionnel de l'Assistant de configuration avec plusieurs scénarios
# Utilisation : ./assistant_config_conditionnel.sh [scenario]

assistant_config_conditionnel() {
    local scenario=${1:-"defaut"}
    local fichier_log="/var/log/roundfleet_assistant_config.log"
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    
    # Vérifier si le script est exécuté en tant que root
    if [ "$EUID" -ne 0 ]; then
        echo "Erreur : Ce script doit être exécuté en tant que root"
        exit 1
    fi
    
    echo "[$timestamp] Déclenchement conditionnel de l'Assistant de configuration - Scénario : $scenario" >> "$fichier_log"
    
    case $scenario in
        "nouvel_employe")
            declencher_config_nouvel_employe
            ;;
        "actualisation_appareil")
            declencher_config_actualisation_appareil
            ;;
        "reinitialisation_conformite")
            declencher_reinitialisation_conformite
            ;;
        "depannage")
            declencher_config_depannage
            ;;
        "deploiement_masse")
            declencher_config_deploiement_masse
            ;;
        "defaut")
            declencher_config_defaut
            ;;
        *)
            echo "Scénario inconnu : $scenario"
            echo "Scénarios disponibles : nouvel_employe, actualisation_appareil, reinitialisation_conformite, depannage, deploiement_masse, defaut"
            exit 1
            ;;
    esac
}

declencher_config_nouvel_employe() {
    echo "Configuration de l'Assistant de configuration pour l'intégration d'un nouvel employé..."
    
    # Supprimer le marqueur de l'Assistant de configuration
    rm -f /private/var/db/.AppleSetupDone
    
    echo "[$timestamp] Configuration nouvel employé - Assistant de configuration configuré" >> "$fichier_log"
    
    cat << 'EOF'
Assistant de configuration configuré pour l'intégration d'un nouvel employé.

Les éléments suivants seront présentés à l'utilisateur :
• Sélection de la langue et de la région
• Configuration du réseau Wi-Fi
• Connexion avec l'Apple ID
• Création d'un compte utilisateur
• Paramètres de confidentialité et de sécurité
• Configuration de Touch ID (si disponible)
• Préférences d'apparence du bureau

Veuillez redémarrer l'appareil et le fournir au nouvel employé.
EOF
}

declencher_config_actualisation_appareil() {
    echo "Configuration de l'Assistant de configuration pour l'actualisation d'appareil..."
    
    # Vérifier si les données utilisateur doivent être préservées
    local repertoires_utilisateur=$(ls /Users | grep -v "Shared" | grep -v "Guest" | head -5)
    if [ -n "$repertoires_utilisateur" ]; then
        echo "Comptes utilisateur existants détectés :"
        echo "$repertoires_utilisateur"
        echo ""
        read -p "Préserver les données utilisateur existantes ? (O/n) : " preserver_donnees
        
        if [ "$preserver_donnees" = "n" ] || [ "$preserver_donnees" = "N" ]; then
            echo "Attention : Cela supprimera les données utilisateur lors de l'actualisation."
            read -p "Êtes-vous sûr ? (o/N) : " confirmer
            if [ "$confirmer" != "o" ] && [ "$confirmer" != "O" ]; then
                echo "Opération annulée."
                return 1
            fi
        fi
    fi
    
    rm -f /private/var/db/.AppleSetupDone
    echo "[$timestamp] Configuration actualisation appareil - Assistant de configuration configuré" >> "$fichier_log"
    
    echo "Assistant de configuration configuré pour l'actualisation d'appareil."
    echo "Redémarrez l'appareil pour commencer le processus de reconfiguration."
}

declencher_reinitialisation_conformite() {
    echo "Configuration de l'Assistant de configuration pour la réinitialisation de conformité..."
    
    # Enregistrer la réinitialisation de conformité
    echo "[$timestamp] Réinitialisation de conformité initiée - Assistant de configuration déclenché" >> "$fichier_log"
    
    # Supprimer le marqueur de l'Assistant de configuration
    rm -f /private/var/db/.AppleSetupDone
    
    cat << 'EOF'
Assistant de configuration configuré pour la réinitialisation de conformité.

Cela garantira que l'appareil répond aux exigences de conformité organisationnelle :
• Forcer la re-acceptation des termes et politiques
• Vérifier les configurations des comptes utilisateur
• Confirmer les paramètres de sécurité
• Mettre à jour les préférences de confidentialité
• Valider les paramètres organisationnels

Redémarrez l'appareil pour commencer la vérification de conformité.
EOF
}

declencher_config_depannage() {
    echo "Configuration de l'Assistant de configuration pour le dépannage..."
    
    # Créer un rapport de dépannage
    local rapport_depannage="/tmp/rapport_depannage_$(date +%Y%m%d_%H%M%S).txt"
    
    cat > "$rapport_depannage" << EOF
Rapport de dépannage Roundfleet
Généré : $(date)
Appareil : $(scutil --get ComputerName)
Version macOS : $(sw_vers -productVersion)

Problèmes que l'Assistant de configuration peut résoudre :
• Problèmes de configuration des comptes utilisateur
• Corruption des préférences système
• Problèmes de configuration réseau
• Problèmes d'authentification Apple ID
• Incohérences des paramètres de confidentialité

L'Assistant de configuration sera déclenché au prochain redémarrage.
EOF
    
    rm -f /private/var/db/.AppleSetupDone
    echo "[$timestamp] Configuration dépannage - Assistant de configuration configuré" >> "$fichier_log"
    
    echo "Assistant de configuration configuré pour le dépannage."
    echo "Rapport de dépannage sauvegardé à : $rapport_depannage"
    echo "Redémarrez l'appareil pour commencer le processus de configuration."
}

declencher_config_deploiement_masse() {
    echo "Configuration de l'Assistant de configuration pour le déploiement de masse..."
    
    # Obtenir le numéro de série de l'appareil pour le suivi
    local numero_serie=$(system_profiler SPHardwareDataType | grep "Serial Number" | awk '{print $4}')
    
    # Enregistrer le déploiement
    echo "[$timestamp] Configuration déploiement de masse - Appareil : $numero_serie" >> "$fichier_log"
    
    rm -f /private/var/db/.AppleSetupDone
    
    cat << EOF
Assistant de configuration configuré pour le déploiement de masse.

Numéro de série de l'appareil : $numero_serie
Date de déploiement : $(date)

La configuration standardisée inclura :
• Langue : Français
• Région : France
• Réseau : Wi-Fi d'entreprise
• Compte : Compte utilisateur standard
• Sécurité : Politiques de sécurité d'entreprise
• Applications : Applications d'entreprise standard

L'appareil est prêt pour le déploiement. Redémarrez pour commencer la configuration.
EOF
}

declencher_config_defaut() {
    echo "Configuration de l'Assistant de configuration avec les paramètres par défaut..."
    
    rm -f /private/var/db/.AppleSetupDone
    echo "[$timestamp] Configuration par défaut - Assistant de configuration configuré" >> "$fichier_log"
    
    echo "Assistant de configuration configuré avec les paramètres par défaut."
    echo "Redémarrez l'appareil pour commencer le processus de configuration."
}

# Exécution principale
if [ $# -eq 0 ]; then
    echo "Utilisation : $0 [scenario]"
    echo "Scénarios disponibles :"
    echo "  nouvel_employe        - Configurer pour l'intégration d'un nouvel employé"
    echo "  actualisation_appareil - Configurer pour l'actualisation/reconfiguration d'appareil"
    echo "  reinitialisation_conformite - Configurer pour la vérification de conformité"
    echo "  depannage             - Configurer pour le dépannage"
    echo "  deploiement_masse     - Configurer pour le déploiement de masse"
    echo "  defaut                - Configurer avec les paramètres par défaut"
    echo ""
    assistant_config_conditionnel "defaut"
else
    assistant_config_conditionnel "$1"
fi

Automatisation et surveillance de l'Assistant de configuration

Gestionnaire d'entreprise de l'Assistant de configuration

#!/bin/bash

# Gestionnaire d'entreprise de l'Assistant de configuration
# Utilisation : ./gestionnaire_entreprise_assistant.sh

gestionnaire_entreprise_assistant() {
    local fichier_config="/etc/roundfleet/config_assistant_configuration.conf"
    local fichier_log="/var/log/roundfleet_assistant_config.log"
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    
    # Vérifier si le script est exécuté en tant que root
    if [ "$EUID" -ne 0 ]; then
        echo "Erreur : Ce script doit être exécuté en tant que root"
        exit 1
    fi
    
    # Créer le répertoire de configuration
    mkdir -p /etc/roundfleet
    
    # Charger ou créer la configuration
    if [ -f "$fichier_config" ]; then
        source "$fichier_config"
    else
        creer_config_entreprise
        source "$fichier_config"
    fi
    
    echo "[$timestamp] Gestionnaire d'entreprise de l'Assistant de configuration démarré" >> "$fichier_log"
    
    # Afficher le menu de configuration
    afficher_menu_entreprise
}

creer_config_entreprise() {
    cat > "/etc/roundfleet/config_assistant_configuration.conf" << 'EOF'
# Configuration de l'Assistant de configuration d'entreprise Roundfleet

# Informations de l'organisation
NOM_ORGANISATION="Organisation Roundfleet"
EMAIL_CONTACT_IT="[email protected]"
TELEPHONE_CONTACT_IT="1-800-ROUNDFLEET"

# Configuration par défaut
LANGUE_DEFAUT="Français"
REGION_DEFAUT="France"
NECESSITER_APPLE_ID="false"
ACTIVER_SERVICES_LOCALISATION="false"
ACTIVER_SIRI="false"
NECESSITER_ACCEPTATION_TERMES="true"

# Paramètres de sécurité
NECESSITER_MOT_PASSE_FORT="true"
ACTIVER_FILEVAULT="true"
NECESSITER_TOUCH_ID="true"

# Paramètres de déploiement
MODE_DEPLOIEMENT="entreprise"
IGNORER_ETAPES_OPTIONNELLES="true"
AUTO_CONFIGURER_RESEAU="true"
EOF
    
    echo "Configuration d'entreprise créée à /etc/roundfleet/config_assistant_configuration.conf"
}

afficher_menu_entreprise() {
    while true; do
        clear
        echo "======================================="
        echo "Assistant de configuration d'entreprise Roundfleet"
        echo "======================================="
        echo ""
        echo "Organisation : $NOM_ORGANISATION"
        echo "Contact : $EMAIL_CONTACT_IT"
        echo ""
        echo "Actions disponibles :"
        echo "1. Déclencher l'Assistant de configuration (Appareil unique)"
        echo "2. Préparer le déploiement de masse"
        echo "3. Configurer les options de l'Assistant"
        echo "4. Voir le statut de l'Assistant de configuration"
        echo "5. Générer un rapport de déploiement"
        echo "6. Sauvegarder/Restaurer l'état de configuration"
        echo "7. Voir la configuration"
        echo "8. Quitter"
        echo ""
        read -p "Sélectionnez une option (1-8) : " choix
        
        case $choix in
            1)
                declencher_config_appareil_unique
                ;;
            2)
                preparer_deploiement_masse
                ;;
            3)
                configurer_options_assistant
                ;;
            4)
                voir_statut_assistant
                ;;
            5)
                generer_rapport_deploiement
                ;;
            6)
                sauvegarder_restaurer_config
                ;;
            7)
                voir_configuration
                ;;
            8)
                echo "Fermeture du gestionnaire d'entreprise de l'Assistant de configuration."
                exit 0
                ;;
            *)
                echo "Option invalide. Veuillez réessayer."
                ;;
        esac
        
        echo ""
        read -p "Appuyez sur Entrée pour continuer..."
    done
}

declencher_config_appareil_unique() {
    echo "======================================="
    echo "Déclencher l'Assistant de configuration - Appareil unique"
    echo "======================================="
    
    local nom_appareil=$(scutil --get ComputerName)
    local numero_serie=$(system_profiler SPHardwareDataType | grep "Serial Number" | awk '{print $4}')
    
    echo "Appareil : $nom_appareil"
    echo "Numéro de série : $numero_serie"
    echo ""
    
    read -p "Confirmer le déclenchement de l'Assistant de configuration sur cet appareil ? (o/N) : " confirmer
    if [ "$confirmer" = "o" ] || [ "$confirmer" = "O" ]; then
        # Supprimer le marqueur de l'Assistant de configuration
        if rm -f /private/var/db/.AppleSetupDone; then
            echo "[$timestamp] Configuration appareil unique déclenchée - $nom_appareil ($numero_serie)" >> "$fichier_log"
            echo "Assistant de configuration configuré avec succès."
            echo "Veuillez redémarrer l'appareil pour commencer la configuration."
        else
            echo "Erreur : Impossible de configurer l'Assistant de configuration."
        fi
    else
        echo "Opération annulée."
    fi
}

preparer_deploiement_masse() {
    echo "======================================="
    echo "Préparer le déploiement de masse"
    echo "======================================="
    
    read -p "Entrez le nombre d'appareils pour le déploiement : " nombre_appareils
    read -p "Entrez le nom du lot de déploiement : " nom_lot
    
    local repertoire_deploiement="/var/roundfleet/deploiements/$nom_lot"
    mkdir -p "$repertoire_deploiement"
    
    # Créer le package de déploiement
    cat > "$repertoire_deploiement/deployer_assistant_config.sh" << 'EOF'
#!/bin/bash
# Déclencheur de l'Assistant de configuration pour déploiement de masse Roundfleet
# Script de déploiement auto-généré

# Vérifier si le script est exécuté en tant que root
if [ "$EUID" -ne 0 ]; then
    echo "Erreur : Ce script doit être exécuté en tant que root"
    exit 1
fi

# Supprimer le marqueur de l'Assistant de configuration
rm -f /private/var/db/.AppleSetupDone

# Enregistrer le déploiement
echo "$(date '+%Y-%m-%d %H:%M:%S') - Configuration déploiement de masse déclenchée sur $(scutil --get ComputerName)" >> /var/log/roundfleet_deploiement_masse.log

echo "Assistant de configuration configuré pour le déploiement de masse."
echo "Redémarrez l'appareil pour commencer le processus de configuration."
EOF
    
    chmod +x "$repertoire_deploiement/deployer_assistant_config.sh"
    
    # Créer le manifeste de déploiement
    cat > "$repertoire_deploiement/manifeste_deploiement.txt" << EOF
Manifeste de déploiement de masse Roundfleet
Nom du lot : $nom_lot
Nombre d'appareils : $nombre_appareils
Créé : $(date)
Organisation : $NOM_ORGANISATION

Instructions de déploiement :
1. Copier deployer_assistant_config.sh sur chaque appareil
2. Exécuter le script en tant que root sur chaque appareil
3. Redémarrer les appareils pour commencer l'Assistant de configuration
4. Suivre les procédures de configuration standard

Contact : $EMAIL_CONTACT_IT
EOF
    
    echo "Package de déploiement de masse créé à : $repertoire_deploiement"
    echo "Script de déploiement : $repertoire_deploiement/deployer_assistant_config.sh"
    echo "Manifeste : $repertoire_deploiement/manifeste_deploiement.txt"
}

configurer_options_assistant() {
    echo "======================================="
    echo "Configurer les options de l'Assistant"
    echo "======================================="
    
    echo "Configuration actuelle :"
    echo "  Langue : $LANGUE_DEFAUT"
    echo "  Région : $REGION_DEFAUT"
    echo "  Nécessiter Apple ID : $NECESSITER_APPLE_ID"
    echo "  Activer les services de localisation : $ACTIVER_SERVICES_LOCALISATION"
    echo "  Activer Siri : $ACTIVER_SIRI"
    echo ""
    
    read -p "Modifier la configuration ? (o/N) : " modifier
    if [ "$modifier" = "o" ] || [ "$modifier" = "O" ]; then
        echo "La modification de la configuration nécessiterait une configuration supplémentaire..."
        echo "Veuillez modifier : /etc/roundfleet/config_assistant_configuration.conf"
    fi
}

voir_statut_assistant() {
    echo "======================================="
    echo "Statut de l'Assistant de configuration"
    echo "======================================="
    
    local fichier_config_termine="/private/var/db/.AppleSetupDone"
    local nom_appareil=$(scutil --get ComputerName)
    local version_os=$(sw_vers -productVersion)
    
    echo "Appareil : $nom_appareil"
    echo "Version macOS : $version_os"
    echo "Horodatage : $(date)"
    echo ""
    
    if [ -f "$fichier_config_termine" ]; then
        echo "Statut : Assistant de configuration TERMINÉ"
        echo "Fichier : $fichier_config_termine existe"
        echo "Modifié : $(stat -f "%Sm" "$fichier_config_termine")"
        echo ""
        echo "L'Assistant de configuration ne s'exécutera PAS au prochain redémarrage."
    else
        echo "Statut : Assistant de configuration PROGRAMMÉ"
        echo "Fichier : $fichier_config_termine n'existe pas"
        echo ""
        echo "L'Assistant de configuration s'exécutera au prochain redémarrage."
    fi
}

generer_rapport_deploiement() {
    echo "======================================="
    echo "Générer un rapport de déploiement"
    echo "======================================="
    
    local fichier_rapport="/tmp/rapport_roundfleet_assistant_$(date +%Y%m%d_%H%M%S).txt"
    
    cat > "$fichier_rapport" << EOF
Rapport de déploiement de l'Assistant de configuration Roundfleet
Généré : $(date)
Organisation : $NOM_ORGANISATION

Informations sur l'appareil :
  Nom de l'ordinateur : $(scutil --get ComputerName)
  Numéro de série : $(system_profiler SPHardwareDataType | grep "Serial Number" | awk '{print $4}')
  Version macOS : $(sw_vers -productVersion)
  Modèle matériel : $(system_profiler SPHardwareDataType | grep "Model Name" | cut -d: -f2 | xargs)

Statut de l'Assistant de configuration :
EOF
    
    if [ -f "/private/var/db/.AppleSetupDone" ]; then
        echo "  Statut : Terminé" >> "$fichier_rapport"
        echo "  Dernière exécution : $(stat -f "%Sm" "/private/var/db/.AppleSetupDone")" >> "$fichier_rapport"
    else
        echo "  Statut : Programmé pour le prochain redémarrage" >> "$fichier_rapport"
    fi
    
    cat >> "$fichier_rapport" << EOF

Configuration :
  Langue par défaut : $LANGUE_DEFAUT
  Région par défaut : $REGION_DEFAUT
  Mode de déploiement : $MODE_DEPLOIEMENT
  Contact : $EMAIL_CONTACT_IT

Entrées de log récentes :
EOF
    
    if [ -f "/var/log/roundfleet_assistant_config.log" ]; then
        tail -10 "/var/log/roundfleet_assistant_config.log" >> "$fichier_rapport"
    else
        echo "  Aucune entrée de log trouvée" >> "$fichier_rapport"
    fi
    
    echo "Rapport de déploiement généré : $fichier_rapport"
}

sauvegarder_restaurer_config() {
    echo "======================================="
    echo "Sauvegarder/Restaurer l'état de configuration"
    echo "======================================="
    
    echo "1. Sauvegarder l'état actuel de l'Assistant de configuration"
    echo "2. Restaurer l'état de l'Assistant de configuration"
    echo ""
    read -p "Sélectionnez une option (1-2) : " option_sauvegarde
    
    case $option_sauvegarde in
        1)
            sauvegarder_etat_config
            ;;
        2)
            restaurer_etat_config
            ;;
        *)
            echo "Option invalide."
            ;;
    esac
}

sauvegarder_etat_config() {
    local repertoire_sauvegarde="/var/backups/roundfleet"
    local timestamp=$(date +%Y%m%d_%H%M%S)
    
    mkdir -p "$repertoire_sauvegarde"
    
    if [ -f "/private/var/db/.AppleSetupDone" ]; then
        cp "/private/var/db/.AppleSetupDone" "$repertoire_sauvegarde/.AppleSetupDone.sauvegarde.$timestamp"
        echo "État de l'Assistant de configuration sauvegardé à : $repertoire_sauvegarde/.AppleSetupDone.sauvegarde.$timestamp"
    else
        echo "Aucun état de l'Assistant de configuration à sauvegarder (fichier n'existe pas)."
    fi
}

restaurer_etat_config() {
    local repertoire_sauvegarde="/var/backups/roundfleet"
    
    if [ -d "$repertoire_sauvegarde" ]; then
        echo "Sauvegardes disponibles :"
        ls -la "$repertoire_sauvegarde"/.AppleSetupDone.sauvegarde.* 2>/dev/null || echo "Aucune sauvegarde trouvée."
        echo ""
        read -p "Entrez le nom du fichier de sauvegarde à restaurer : " fichier_sauvegarde
        
        if [ -f "$repertoire_sauvegarde/$fichier_sauvegarde" ]; then
            cp "$repertoire_sauvegarde/$fichier_sauvegarde" "/private/var/db/.AppleSetupDone"
            echo "État de l'Assistant de configuration restauré depuis : $fichier_sauvegarde"
        else
            echo "Fichier de sauvegarde non trouvé."
        fi
    else
        echo "Aucun répertoire de sauvegarde trouvé."
    fi
}

voir_configuration() {
    echo "======================================="
    echo "Configuration actuelle"
    echo "======================================="
    
    if [ -f "/etc/roundfleet/config_assistant_configuration.conf" ]; then
        cat "/etc/roundfleet/config_assistant_configuration.conf"
    else
        echo "Aucun fichier de configuration trouvé."
    fi
}

# Exécuter le gestionnaire d'entreprise
gestionnaire_entreprise_assistant

Dépannage et bonnes pratiques

Problèmes courants et solutions

1. Compatibilité de version macOS

# Vérifier la version macOS avant l'exécution
version_os=$(sw_vers -productVersion)
version_majeure=$(echo "$version_os" | cut -d. -f1)

if [ "$version_majeure" -ge 14 ]; then
    echo "Attention : Ce script pourrait ne pas fonctionner sur macOS 14 ou ultérieur"
    echo "Version actuelle : $version_os"
fi

2. Problèmes de permissions

# S'assurer que le script s'exécute avec les privilèges appropriés
if [ "$EUID" -ne 0 ]; then
    echo "Erreur : Ce script doit être exécuté en tant que root"
    echo "Veuillez utiliser : sudo $0"
    exit 1
fi

3. Protection du système de fichiers

# Vérifier si la protection d'intégrité du système affecte l'opération
csrutil status | grep -q "enabled"
if [ $? -eq 0 ]; then
    echo "Note : SIP est activé. Cela pourrait affecter le fonctionnement du script."
fi

Bonnes pratiques pour la gestion de l'Assistant de configuration

  1. Compatibilité de version : Toujours vérifier la compatibilité de version macOS avant le déploiement
  2. Communication utilisateur : Notifier les utilisateurs avant de déclencher l'Assistant de configuration
  3. Sauvegarde de données : Créer des sauvegardes avant les changements de configuration majeurs
  4. Tests : Tester les scripts dans des environnements contrôlés avant le déploiement de masse
  5. Journalisation : Maintenir des logs détaillés de toutes les opérations de l'Assistant de configuration
  6. Plans de retour : Préparer des procédures de retour en arrière pour les échecs de déploiement

Considérations de déploiement d'entreprise

  • Planification : Planifier les déploiements pendant les fenêtres de maintenance
  • Impact utilisateur : Considérer les flux de travail des utilisateurs et minimiser les perturbations
  • Exigences réseau : S'assurer d'une connectivité réseau adéquate pour les services Apple
  • Sécurité : Implémenter des mesures de sécurité appropriées pour les déploiements automatisés
  • Conformité : S'assurer que les déploiements respectent les exigences de conformité organisationnelle

Conclusion

La gestion de l'Assistant de configuration est un outil puissant pour l'administration des appareils macOS. Ces scripts fournissent des solutions complètes pour déclencher, gérer et automatiser l'Assistant de configuration dans les flottes Mac. Des déclencheurs simples pour un seul appareil à l'automatisation d'entreprise complexe, ces outils permettent une gestion efficace des appareils tout en maintenant l'expérience utilisateur et la conformité organisationnelle.

N'oubliez pas de tester tous les scripts de manière approfondie dans des environnements contrôlés avant le déploiement en production, et de toujours maintenir des sauvegardes appropriées des configurations système. La surveillance régulière et la journalisation garantissent des déploiements réussis de l'Assistant de configuration et aident à identifier les problèmes potentiels avant qu'ils n'affectent les utilisateurs.

Related Tutorials

Gestion Entreprise de l'Arrêt et du Redémarrage pour macOS

Gérez les opérations d'arrêt et de redémarrage macOS sur les appareils Roundfleet avec la planification automatisée de maintenance, les procédures d'arrêt en douceur, la validation de sécurité et la gestion complète de l'alimentation de la flotte pour les opérations d'entreprise.

7 juil. 2025

Gestion Entreprise du Sommeil et de l'Alimentation pour macOS

Gérez les paramètres de sommeil et d'alimentation macOS sur les appareils Roundfleet avec des politiques d'alimentation automatisées, l'optimisation énergétique, la surveillance de conformité et la gestion complète de la flotte pour l'efficacité et la sécurité d'entreprise.

7 juil. 2025

Gestion d'Entreprise des Redémarrages Programmés sur macOS

Guide complet pour programmer, gérer et surveiller les redémarrages système sur les flottes macOS avec politiques de planification avancées, notifications utilisateur, fenêtres de maintenance et rapports de conformité.

7 juil. 2025

Gérer les processus en cours d'exécution sur macOS

Apprenez à surveiller l'utilisation du CPU, l'état de la mémoire, afficher les processus en cours et terminer des processus sur les appareils macOS en utilisant des scripts en ligne de commande pour la gestion système.

7 juil. 2025

Gestion de Batterie d'Entreprise sur macOS

Apprenez à surveiller l'état, la santé et les performances de la batterie sur les appareils macOS en utilisant des outils de gestion de batterie avancés avec surveillance de niveau entreprise, optimisation, conformité et capacités d'analyse de batterie à l'échelle de la flotte.

7 juil. 2025

Gestion des Limites de Charge de Batterie sur macOS

Apprenez à gérer et configurer les limites de charge de batterie sur les appareils macOS en utilisant bclm (Battery Charge Limit Max) pour l'optimisation de la santé de la batterie d'entreprise et les politiques de gestion d'énergie.

7 juil. 2025

Contrôle Wi-Fi d'Entreprise sur macOS

Guide complet pour contrôler les paramètres Wi-Fi sur les appareils macOS en utilisant les commandes networksetup pour la gestion sans fil d'entreprise, les politiques de sécurité et l'optimisation énergétique dans les déploiements de flotte.

7 juil. 2025

Contrôle d'Accès aux Sites Web d'Entreprise sur macOS

Implémentez un blocage complet de sites web et des listes blanches sur les appareils macOS en utilisant la gestion du fichier hosts, le filtrage DNS et les contrôles de politique d'entreprise pour la sécurité organisationnelle.

7 juil. 2025