Actualiser gnome_accounts.sh

This commit is contained in:
2025-08-14 07:22:18 +00:00
parent b2c7b674d4
commit 871eb0bee3

View File

@@ -2,7 +2,7 @@
# Script de sauvegarde et restauration des comptes et partages réseau GNOME # Script de sauvegarde et restauration des comptes et partages réseau GNOME
# Auteur: Fontaine Johnny # Auteur: Fontaine Johnny
# Version: 1.0 # Version: 1.1 - Ajout sauvegarde SSH
# Couleurs pour l'affichage # Couleurs pour l'affichage
RED='\033[0;31m' RED='\033[0;31m'
@@ -18,6 +18,7 @@ EVOLUTION_CONFIG_DIR="$HOME/.config/evolution"
KEYRING_DIR="$HOME/.local/share/keyrings" KEYRING_DIR="$HOME/.local/share/keyrings"
NETWORK_CONFIG_DIR="/etc/NetworkManager/system-connections" NETWORK_CONFIG_DIR="/etc/NetworkManager/system-connections"
USER_NETWORK_CONFIG_DIR="$HOME/.config/NetworkManager" USER_NETWORK_CONFIG_DIR="$HOME/.config/NetworkManager"
SSH_CONFIG_DIR="$HOME/.ssh"
# Fonction d'affichage avec couleurs # Fonction d'affichage avec couleurs
print_info() { print_info() {
@@ -39,31 +40,31 @@ print_error() {
# Fonction pour installer les prérequis manquants # Fonction pour installer les prérequis manquants
install_requirements() { install_requirements() {
print_info "Installation automatique des prérequis manquants..." print_info "Installation automatique des prérequis manquants..."
local packages_to_install=() local packages_to_install=()
# Vérifier dconf # Vérifier dconf
if ! command -v dconf &> /dev/null; then if ! command -v dconf &> /dev/null; then
print_info "dconf manquant - ajout à la liste d'installation" print_info "dconf manquant - ajout à la liste d'installation"
packages_to_install+=("dconf-cli") packages_to_install+=("dconf-cli")
fi fi
# Vérifier secret-tool # Vérifier secret-tool
if ! command -v secret-tool &> /dev/null; then if ! command -v secret-tool &> /dev/null; then
print_info "secret-tool manquant - ajout à la liste d'installation" print_info "secret-tool manquant - ajout à la liste d'installation"
packages_to_install+=("libsecret-tools") packages_to_install+=("libsecret-tools")
fi fi
# Vérifier seahorse (gestionnaire de trousseau graphique) # Vérifier seahorse (gestionnaire de trousseau graphique)
if ! command -v seahorse &> /dev/null; then if ! command -v seahorse &> /dev/null; then
print_info "seahorse manquant - ajout à la liste d'installation" print_info "seahorse manquant - ajout à la liste d'installation"
packages_to_install+=("seahorse") packages_to_install+=("seahorse")
fi fi
# Installer les paquets manquants # Installer les paquets manquants
if [ ${#packages_to_install[@]} -gt 0 ]; then if [ ${#packages_to_install[@]} -gt 0 ]; then
print_info "Installation des paquets: ${packages_to_install[*]}" print_info "Installation des paquets: ${packages_to_install[*]}"
# Détecter le gestionnaire de paquets # Détecter le gestionnaire de paquets
if command -v apt &> /dev/null; then if command -v apt &> /dev/null; then
sudo apt update && sudo apt install -y "${packages_to_install[@]}" sudo apt update && sudo apt install -y "${packages_to_install[@]}"
@@ -79,7 +80,7 @@ install_requirements() {
print_error "Gestionnaire de paquets non supporté. Installez manuellement: ${packages_to_install[*]}" print_error "Gestionnaire de paquets non supporté. Installez manuellement: ${packages_to_install[*]}"
exit 1 exit 1
fi fi
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
print_success "Prérequis installés avec succès" print_success "Prérequis installés avec succès"
else else
@@ -94,32 +95,32 @@ install_requirements() {
# Fonction pour vérifier les prérequis # Fonction pour vérifier les prérequis
check_requirements() { check_requirements() {
print_info "Vérification des prérequis..." print_info "Vérification des prérequis..."
# Vérifier si GNOME est en cours d'exécution # Vérifier si GNOME est en cours d'exécution
if ! pgrep -x "gnome-shell" > /dev/null; then if ! pgrep -x "gnome-shell" > /dev/null; then
print_warning "GNOME Shell ne semble pas être en cours d'exécution" print_warning "GNOME Shell ne semble pas être en cours d'exécution"
fi fi
# Installer automatiquement les prérequis manquants # Installer automatiquement les prérequis manquants
install_requirements install_requirements
print_success "Prérequis vérifiés et installés" print_success "Prérequis vérifiés et installés"
} }
# Fonction de sauvegarde # Fonction de sauvegarde
backup_accounts_network() { backup_accounts_network() {
print_info "Début de la sauvegarde des comptes et partages réseau GNOME..." print_info "Début de la sauvegarde des comptes et partages réseau GNOME..."
# Créer le répertoire de sauvegarde # Créer le répertoire de sauvegarde
mkdir -p "$BACKUP_DIR" mkdir -p "$BACKUP_DIR"
# Date de la sauvegarde # Date de la sauvegarde
BACKUP_DATE=$(date +"%Y%m%d_%H%M%S") BACKUP_DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_BASE="$BACKUP_DIR/gnome-accounts-network-$BACKUP_DATE" BACKUP_BASE="$BACKUP_DIR/gnome-accounts-network-$BACKUP_DATE"
# Créer un répertoire pour cette sauvegarde # Créer un répertoire pour cette sauvegarde
mkdir -p "$BACKUP_BASE" mkdir -p "$BACKUP_BASE"
# Sauvegarder GNOME Online Accounts (GOA) # Sauvegarder GNOME Online Accounts (GOA)
print_info "Sauvegarde des comptes en ligne (GNOME Online Accounts)..." print_info "Sauvegarde des comptes en ligne (GNOME Online Accounts)..."
if [ -d "$GOA_CONFIG_DIR" ]; then if [ -d "$GOA_CONFIG_DIR" ]; then
@@ -132,7 +133,7 @@ backup_accounts_network() {
else else
print_warning "Répertoire GOA non trouvé: $GOA_CONFIG_DIR" print_warning "Répertoire GOA non trouvé: $GOA_CONFIG_DIR"
fi fi
# Sauvegarder Evolution (comptes mail) # Sauvegarder Evolution (comptes mail)
print_info "Sauvegarde des comptes Evolution (mail)..." print_info "Sauvegarde des comptes Evolution (mail)..."
if [ -d "$EVOLUTION_CONFIG_DIR" ]; then if [ -d "$EVOLUTION_CONFIG_DIR" ]; then
@@ -154,7 +155,73 @@ backup_accounts_network() {
else else
print_warning "Répertoire Evolution non trouvé: $EVOLUTION_CONFIG_DIR" print_warning "Répertoire Evolution non trouvé: $EVOLUTION_CONFIG_DIR"
fi fi
# Sauvegarder la configuration SSH
print_info "Sauvegarde de la configuration SSH..."
if [ -d "$SSH_CONFIG_DIR" ]; then
SSH_BACKUP="$BACKUP_BASE/ssh"
mkdir -p "$SSH_BACKUP"
print_warning "ATTENTION: Sauvegarde des clés SSH privées!"
print_warning "Cette opération sauvegarde vos clés privées SSH (TRÈS SENSIBLE!)"
# Sauvegarder tous les fichiers SSH
cp -r "$SSH_CONFIG_DIR"/* "$SSH_BACKUP/" 2>/dev/null
# Créer un inventaire des fichiers SSH sauvegardés
SSH_INVENTORY="$SSH_BACKUP/ssh-inventory.txt"
{
echo "=== INVENTAIRE DES FICHIERS SSH SAUVEGARDÉS ==="
echo "Date: $(date)"
echo "Utilisateur: $USER"
echo ""
echo "Fichiers sauvegardés:"
ls -la "$SSH_BACKUP/" 2>/dev/null | grep -v "ssh-inventory.txt"
echo ""
echo "⚠ ATTENTION: Clés privées sauvegardées!"
echo "⚠ Ne partagez JAMAIS ces fichiers!"
echo ""
# Lister les clés publiques avec leurs empreintes
if command -v ssh-keygen &> /dev/null; then
echo "=== EMPREINTES DES CLÉS PUBLIQUES ==="
find "$SSH_BACKUP" -name "*.pub" | while read -r pubkey; do
if [ -f "$pubkey" ]; then
keyname=$(basename "$pubkey")
echo "Clé: $keyname"
ssh-keygen -lf "$pubkey" 2>/dev/null || echo " Erreur lecture empreinte"
echo ""
fi
done
fi
# Analyser le fichier config s'il existe
if [ -f "$SSH_BACKUP/config" ]; then
echo "=== CONFIGURATION SSH (config) ==="
echo "Hosts configurés:"
grep -E "^Host " "$SSH_BACKUP/config" 2>/dev/null | sed 's/Host / - /' || echo " Aucun host configuré"
echo ""
fi
} > "$SSH_INVENTORY"
# Sécuriser les permissions des clés privées sauvegardées
find "$SSH_BACKUP" -type f -name "*" ! -name "*.pub" ! -name "config" ! -name "known_hosts*" ! -name "ssh-inventory.txt" -exec chmod 600 {} \; 2>/dev/null
find "$SSH_BACKUP" -name "*.pub" -exec chmod 644 {} \; 2>/dev/null
[ -f "$SSH_BACKUP/config" ] && chmod 600 "$SSH_BACKUP/config"
print_success "Configuration SSH sauvegardée"
print_warning "Inventaire créé: $SSH_INVENTORY"
# Compter les éléments sauvegardés
ssh_files_count=$(ls -1 "$SSH_BACKUP/" 2>/dev/null | wc -l)
private_keys_count=$(find "$SSH_BACKUP" -type f -name "*" ! -name "*.pub" ! -name "config" ! -name "known_hosts*" ! -name "ssh-inventory.txt" | wc -l)
public_keys_count=$(find "$SSH_BACKUP" -name "*.pub" | wc -l)
print_info "SSH sauvegardé: $ssh_files_count fichiers ($private_keys_count clés privées, $public_keys_count clés publiques)"
else
print_warning "Répertoire SSH non trouvé: $SSH_CONFIG_DIR"
fi
# Sauvegarder les paramètres dconf liés aux comptes # Sauvegarder les paramètres dconf liés aux comptes
print_info "Sauvegarde des paramètres des comptes (dconf)..." print_info "Sauvegarde des paramètres des comptes (dconf)..."
DCONF_ACCOUNTS="$BACKUP_BASE/accounts-settings.dconf" DCONF_ACCOUNTS="$BACKUP_BASE/accounts-settings.dconf"
@@ -164,18 +231,18 @@ backup_accounts_network() {
dconf dump /org/gnome/evolution/ dconf dump /org/gnome/evolution/
dconf dump /org/gnome/settings-daemon/plugins/sharing/ dconf dump /org/gnome/settings-daemon/plugins/sharing/
} > "$DCONF_ACCOUNTS" 2>/dev/null } > "$DCONF_ACCOUNTS" 2>/dev/null
if [ -s "$DCONF_ACCOUNTS" ]; then if [ -s "$DCONF_ACCOUNTS" ]; then
print_success "Paramètres des comptes sauvegardés" print_success "Paramètres des comptes sauvegardés"
else else
print_warning "Aucun paramètre de compte à sauvegarder" print_warning "Aucun paramètre de compte à sauvegarder"
fi fi
# Sauvegarder les connexions réseau (avec sudo si nécessaire) # Sauvegarder les connexions réseau (avec sudo si nécessaire)
print_info "Sauvegarde des connexions réseau..." print_info "Sauvegarde des connexions réseau..."
NETWORK_BACKUP="$BACKUP_BASE/network-connections" NETWORK_BACKUP="$BACKUP_BASE/network-connections"
mkdir -p "$NETWORK_BACKUP" mkdir -p "$NETWORK_BACKUP"
# Connexions système (nécessite sudo) # Connexions système (nécessite sudo)
if [ -d "$NETWORK_CONFIG_DIR" ] && sudo -n true 2>/dev/null; then if [ -d "$NETWORK_CONFIG_DIR" ] && sudo -n true 2>/dev/null; then
print_info "Sauvegarde des connexions système (avec sudo)..." print_info "Sauvegarde des connexions système (avec sudo)..."
@@ -187,13 +254,13 @@ backup_accounts_network() {
else else
print_warning "Impossible de sauvegarder les connexions système (sudo requis ou non disponible)" print_warning "Impossible de sauvegarder les connexions système (sudo requis ou non disponible)"
fi fi
# Connexions utilisateur # Connexions utilisateur
if [ -d "$USER_NETWORK_CONFIG_DIR" ]; then if [ -d "$USER_NETWORK_CONFIG_DIR" ]; then
cp -r "$USER_NETWORK_CONFIG_DIR" "$BACKUP_BASE/user-network-config" 2>/dev/null cp -r "$USER_NETWORK_CONFIG_DIR" "$BACKUP_BASE/user-network-config" 2>/dev/null
print_success "Configuration réseau utilisateur sauvegardée" print_success "Configuration réseau utilisateur sauvegardée"
fi fi
# Sauvegarder les partages réseau (dconf) # Sauvegarder les partages réseau (dconf)
print_info "Sauvegarde des paramètres de partage réseau..." print_info "Sauvegarde des paramètres de partage réseau..."
DCONF_SHARING="$BACKUP_BASE/sharing-settings.dconf" DCONF_SHARING="$BACKUP_BASE/sharing-settings.dconf"
@@ -202,13 +269,13 @@ backup_accounts_network() {
dconf dump /org/gnome/desktop/file-sharing/ dconf dump /org/gnome/desktop/file-sharing/
dconf dump /org/gtk/settings/file-chooser/ dconf dump /org/gtk/settings/file-chooser/
} > "$DCONF_SHARING" 2>/dev/null } > "$DCONF_SHARING" 2>/dev/null
if [ -s "$DCONF_SHARING" ]; then if [ -s "$DCONF_SHARING" ]; then
print_success "Paramètres de partage sauvegardés" print_success "Paramètres de partage sauvegardés"
else else
print_warning "Aucun paramètre de partage à sauvegarder" print_warning "Aucun paramètre de partage à sauvegarder"
fi fi
# Sauvegarder la liste des signets de fichiers (lieux réseau) # Sauvegarder la liste des signets de fichiers (lieux réseau)
print_info "Sauvegarde des signets de fichiers..." print_info "Sauvegarde des signets de fichiers..."
BOOKMARKS_FILE="$HOME/.config/gtk-3.0/bookmarks" BOOKMARKS_FILE="$HOME/.config/gtk-3.0/bookmarks"
@@ -218,15 +285,15 @@ backup_accounts_network() {
else else
print_warning "Fichier de signets non trouvé" print_warning "Fichier de signets non trouvé"
fi fi
# Sauvegarder le trousseau de clés COMPLET (ATTENTION: SENSIBLE!) # Sauvegarder le trousseau de clés COMPLET (ATTENTION: SENSIBLE!)
print_warning "ATTENTION: Sauvegarde des mots de passe du trousseau de clés..." print_warning "ATTENTION: Sauvegarde des mots de passe du trousseau de clés..."
print_warning "Cette opération sauvegarde les mots de passe en texte quasi-lisible!" print_warning "Cette opération sauvegarde les mots de passe en texte quasi-lisible!"
print_warning "Protégez absolument ces fichiers de sauvegarde!" print_warning "Protégez absolument ces fichiers de sauvegarde!"
KEYRING_BACKUP="$BACKUP_BASE/keyring-passwords" KEYRING_BACKUP="$BACKUP_BASE/keyring-passwords"
mkdir -p "$KEYRING_BACKUP" mkdir -p "$KEYRING_BACKUP"
# Sauvegarder les trousseaux de clés physiques # Sauvegarder les trousseaux de clés physiques
if [ -d "$KEYRING_DIR" ]; then if [ -d "$KEYRING_DIR" ]; then
print_info "Sauvegarde des fichiers de trousseau de clés..." print_info "Sauvegarde des fichiers de trousseau de clés..."
@@ -237,22 +304,22 @@ backup_accounts_network() {
print_warning "Erreur lors de la copie des fichiers de trousseau" print_warning "Erreur lors de la copie des fichiers de trousseau"
fi fi
fi fi
# Exporter les secrets avec secret-tool (si disponible) # Exporter les secrets avec secret-tool (si disponible)
if command -v secret-tool &> /dev/null; then if command -v secret-tool &> /dev/null; then
print_info "Export des mots de passe avec secret-tool..." print_info "Export des mots de passe avec secret-tool..."
# Créer un script d'export des secrets # Créer un script d'export des secrets
SECRETS_EXPORT="$KEYRING_BACKUP/secrets-export.txt" SECRETS_EXPORT="$KEYRING_BACKUP/secrets-export.txt"
SECRETS_RESTORE="$KEYRING_BACKUP/restore-secrets.sh" SECRETS_RESTORE="$KEYRING_BACKUP/restore-secrets.sh"
{ {
echo "=== SECRETS EXPORTÉS (ATTENTION: SENSIBLE!) ===" echo "=== SECRETS EXPORTÉS (ATTENTION: SENSIBLE!) ==="
echo "Date: $(date)" echo "Date: $(date)"
echo "Utilisateur: $USER" echo "Utilisateur: $USER"
echo "" echo ""
} > "$SECRETS_EXPORT" } > "$SECRETS_EXPORT"
{ {
echo "#!/bin/bash" echo "#!/bin/bash"
echo "# Script de restauration des secrets" echo "# Script de restauration des secrets"
@@ -260,7 +327,7 @@ backup_accounts_network() {
echo "" echo ""
} > "$SECRETS_RESTORE" } > "$SECRETS_RESTORE"
chmod +x "$SECRETS_RESTORE" chmod +x "$SECRETS_RESTORE"
# Sauvegarder tous les WiFi avec leurs mots de passe # Sauvegarder tous les WiFi avec leurs mots de passe
print_info "Sauvegarde des mots de passe WiFi..." print_info "Sauvegarde des mots de passe WiFi..."
WIFI_PASSWORDS="$KEYRING_BACKUP/wifi-passwords.txt" WIFI_PASSWORDS="$KEYRING_BACKUP/wifi-passwords.txt"
@@ -269,7 +336,7 @@ backup_accounts_network() {
echo "Date: $(date)" echo "Date: $(date)"
echo "" echo ""
} > "$WIFI_PASSWORDS" } > "$WIFI_PASSWORDS"
# Lister toutes les connexions WiFi et extraire les mots de passe # Lister toutes les connexions WiFi et extraire les mots de passe
if command -v nmcli &> /dev/null; then if command -v nmcli &> /dev/null; then
nmcli -g NAME,TYPE connection show | grep ":802-11-wireless" | cut -d: -f1 | while read -r wifi_name; do nmcli -g NAME,TYPE connection show | grep ":802-11-wireless" | cut -d: -f1 | while read -r wifi_name; do
@@ -279,7 +346,7 @@ backup_accounts_network() {
echo "WiFi: $wifi_name" >> "$WIFI_PASSWORDS" echo "WiFi: $wifi_name" >> "$WIFI_PASSWORDS"
echo "Mot de passe: $password" >> "$WIFI_PASSWORDS" echo "Mot de passe: $password" >> "$WIFI_PASSWORDS"
echo "" >> "$WIFI_PASSWORDS" echo "" >> "$WIFI_PASSWORDS"
# Ajouter au script de restauration # Ajouter au script de restauration
echo "# Restauration WiFi: $wifi_name" >> "$SECRETS_RESTORE" echo "# Restauration WiFi: $wifi_name" >> "$SECRETS_RESTORE"
echo "nmcli connection modify \"$wifi_name\" 802-11-wireless-security.psk \"$password\" 2>/dev/null || true" >> "$SECRETS_RESTORE" echo "nmcli connection modify \"$wifi_name\" 802-11-wireless-security.psk \"$password\" 2>/dev/null || true" >> "$SECRETS_RESTORE"
@@ -287,7 +354,7 @@ backup_accounts_network() {
fi fi
done done
fi fi
# Exporter les comptes en ligne avec tentative de récupération des tokens # Exporter les comptes en ligne avec tentative de récupération des tokens
print_info "Tentative d'export des tokens des comptes en ligne..." print_info "Tentative d'export des tokens des comptes en ligne..."
GOA_SECRETS="$KEYRING_BACKUP/goa-secrets.txt" GOA_SECRETS="$KEYRING_BACKUP/goa-secrets.txt"
@@ -296,18 +363,18 @@ backup_accounts_network() {
echo "Date: $(date)" echo "Date: $(date)"
echo "" echo ""
} > "$GOA_SECRETS" } > "$GOA_SECRETS"
if [ -d "$GOA_CONFIG_DIR" ]; then if [ -d "$GOA_CONFIG_DIR" ]; then
find "$GOA_CONFIG_DIR" -name "*.conf" | while read -r account_file; do find "$GOA_CONFIG_DIR" -name "*.conf" | while read -r account_file; do
if [ -f "$account_file" ]; then if [ -f "$account_file" ]; then
provider=$(grep "Provider=" "$account_file" 2>/dev/null | cut -d'=' -f2) provider=$(grep "Provider=" "$account_file" 2>/dev/null | cut -d'=' -f2)
identity=$(grep "Identity=" "$account_file" 2>/dev/null | cut -d'=' -f2) identity=$(grep "Identity=" "$account_file" 2>/dev/null | cut -d'=' -f2)
account_id=$(basename "$account_file" .conf) account_id=$(basename "$account_file" .conf)
if [ -n "$provider" ] && [ -n "$identity" ]; then if [ -n "$provider" ] && [ -n "$identity" ]; then
echo "Compte: $provider - $identity" >> "$GOA_SECRETS" echo "Compte: $provider - $identity" >> "$GOA_SECRETS"
echo "ID: $account_id" >> "$GOA_SECRETS" echo "ID: $account_id" >> "$GOA_SECRETS"
# Chercher les secrets associés # Chercher les secrets associés
secret-tool search goa-identity "$identity" 2>/dev/null | while read -r line; do secret-tool search goa-identity "$identity" 2>/dev/null | while read -r line; do
if [[ "$line" == "secret = "* ]]; then if [[ "$line" == "secret = "* ]]; then
@@ -320,7 +387,7 @@ backup_accounts_network() {
fi fi
done done
fi fi
if [ -s "$SECRETS_EXPORT" ] || [ -s "$WIFI_PASSWORDS" ] || [ -s "$GOA_SECRETS" ]; then if [ -s "$SECRETS_EXPORT" ] || [ -s "$WIFI_PASSWORDS" ] || [ -s "$GOA_SECRETS" ]; then
print_success "Mots de passe sauvegardés" print_success "Mots de passe sauvegardés"
print_warning "FICHIERS SENSIBLES créés dans $KEYRING_BACKUP" print_warning "FICHIERS SENSIBLES créés dans $KEYRING_BACKUP"
@@ -328,7 +395,7 @@ backup_accounts_network() {
print_warning "Aucun mot de passe récupéré automatiquement" print_warning "Aucun mot de passe récupéré automatiquement"
fi fi
fi fi
# Créer une archive compressée # Créer une archive compressée
print_info "Création de l'archive compressée..." print_info "Création de l'archive compressée..."
ARCHIVE_FILE="$BACKUP_DIR/gnome-accounts-network-$BACKUP_DATE.tar.gz" ARCHIVE_FILE="$BACKUP_DIR/gnome-accounts-network-$BACKUP_DATE.tar.gz"
@@ -339,7 +406,7 @@ backup_accounts_network() {
else else
print_error "Erreur lors de la création de l'archive" print_error "Erreur lors de la création de l'archive"
fi fi
# Créer un fichier de métadonnées # Créer un fichier de métadonnées
METADATA_FILE="$BACKUP_DIR/backup-metadata-$BACKUP_DATE.txt" METADATA_FILE="$BACKUP_DIR/backup-metadata-$BACKUP_DATE.txt"
{ {
@@ -353,6 +420,7 @@ backup_accounts_network() {
echo "Éléments sauvegardés:" echo "Éléments sauvegardés:"
echo "- Comptes en ligne GNOME (GOA)" echo "- Comptes en ligne GNOME (GOA)"
echo "- Configuration Evolution (mail)" echo "- Configuration Evolution (mail)"
echo "- Configuration SSH (clés et config)"
echo "- Paramètres des comptes" echo "- Paramètres des comptes"
echo "- Connexions réseau" echo "- Connexions réseau"
echo "- Paramètres de partage" echo "- Paramètres de partage"
@@ -360,11 +428,12 @@ backup_accounts_network() {
echo "- MOTS DE PASSE (trousseau de clés)" echo "- MOTS DE PASSE (trousseau de clés)"
echo "- Mots de passe WiFi" echo "- Mots de passe WiFi"
echo "" echo ""
echo "⚠ ATTENTION: Fichiers de mots de passe inclus!" echo "⚠ ATTENTION: Clés SSH privées incluses!"
echo "⚠ Protégez absolument cette sauvegarde!" echo "⚠ ATTENTION: Fichiers de mots de passe inclus!"
echo "⚠ Protégez absolument cette sauvegarde!"
echo "Archive: $(basename "$ARCHIVE_FILE")" echo "Archive: $(basename "$ARCHIVE_FILE")"
} > "$METADATA_FILE" } > "$METADATA_FILE"
print_success "Sauvegarde terminée! Fichiers dans: $BACKUP_DIR" print_success "Sauvegarde terminée! Fichiers dans: $BACKUP_DIR"
print_info "Métadonnées sauvegardées dans: $METADATA_FILE" print_info "Métadonnées sauvegardées dans: $METADATA_FILE"
} }
@@ -372,13 +441,13 @@ backup_accounts_network() {
# Fonction de restauration # Fonction de restauration
restore_accounts_network() { restore_accounts_network() {
print_info "Restauration des comptes et partages réseau GNOME..." print_info "Restauration des comptes et partages réseau GNOME..."
# Lister les sauvegardes disponibles # Lister les sauvegardes disponibles
if [ ! -d "$BACKUP_DIR" ] || [ -z "$(ls -A "$BACKUP_DIR"/*.tar.gz 2>/dev/null)" ]; then if [ ! -d "$BACKUP_DIR" ] || [ -z "$(ls -A "$BACKUP_DIR"/*.tar.gz 2>/dev/null)" ]; then
print_error "Aucune sauvegarde trouvée dans $BACKUP_DIR" print_error "Aucune sauvegarde trouvée dans $BACKUP_DIR"
return return
fi fi
echo "Sauvegardes disponibles:" echo "Sauvegardes disponibles:"
select backup_file in "$BACKUP_DIR"/*.tar.gz; do select backup_file in "$BACKUP_DIR"/*.tar.gz; do
if [ -n "$backup_file" ]; then if [ -n "$backup_file" ]; then
@@ -387,17 +456,18 @@ restore_accounts_network() {
print_error "Sélection invalide" print_error "Sélection invalide"
fi fi
done done
# Extraire la date de la sauvegarde sélectionnée # Extraire la date de la sauvegarde sélectionnée
BACKUP_DATE=$(basename "$backup_file" | sed 's/gnome-accounts-network-\(.*\)\.tar\.gz/\1/') BACKUP_DATE=$(basename "$backup_file" | sed 's/gnome-accounts-network-\(.*\)\.tar\.gz/\1/')
print_info "Restauration depuis: $(basename "$backup_file")" print_info "Restauration depuis: $(basename "$backup_file")"
# Demander confirmation # Demander confirmation
echo "" echo ""
print_warning "ATTENTION: Cette opération va :" print_warning "ATTENTION: Cette opération va :"
print_warning "- Remplacer vos comptes et paramètres actuels" print_warning "- Remplacer vos comptes et paramètres actuels"
print_warning "- Restaurer les mots de passe sauvegardés" print_warning "- Restaurer les mots de passe sauvegardés"
print_warning "- Restaurer la configuration SSH (clés privées incluses!)"
print_warning "- Il est recommandé de fermer Evolution et autres applications" print_warning "- Il est recommandé de fermer Evolution et autres applications"
echo "" echo ""
read -p "Voulez-vous continuer avec la restauration? (y/N): " confirm read -p "Voulez-vous continuer avec la restauration? (y/N): " confirm
@@ -405,7 +475,7 @@ restore_accounts_network() {
print_info "Restauration annulée" print_info "Restauration annulée"
return return
fi fi
# Créer un répertoire temporaire pour l'extraction # Créer un répertoire temporaire pour l'extraction
TEMP_DIR=$(mktemp -d) TEMP_DIR=$(mktemp -d)
print_info "Extraction de l'archive..." print_info "Extraction de l'archive..."
@@ -415,19 +485,20 @@ restore_accounts_network() {
rm -rf "$TEMP_DIR" rm -rf "$TEMP_DIR"
return return
fi fi
RESTORE_DIR="$TEMP_DIR/gnome-accounts-network-$BACKUP_DATE" RESTORE_DIR="$TEMP_DIR/gnome-accounts-network-$BACKUP_DATE"
# Créer une sauvegarde de sécurité # Créer une sauvegarde de sécurité
print_info "Création d'une sauvegarde de sécurité..." print_info "Création d'une sauvegarde de sécurité..."
SAFETY_DATE=$(date +"%Y%m%d_%H%M%S") SAFETY_DATE=$(date +"%Y%m%d_%H%M%S")
SAFETY_BACKUP="$BACKUP_DIR/safety-backup-$SAFETY_DATE" SAFETY_BACKUP="$BACKUP_DIR/safety-backup-$SAFETY_DATE"
mkdir -p "$SAFETY_BACKUP" mkdir -p "$SAFETY_BACKUP"
[ -d "$GOA_CONFIG_DIR" ] && cp -r "$GOA_CONFIG_DIR" "$SAFETY_BACKUP/goa-1.0-backup" 2>/dev/null [ -d "$GOA_CONFIG_DIR" ] && cp -r "$GOA_CONFIG_DIR" "$SAFETY_BACKUP/goa-1.0-backup" 2>/dev/null
[ -d "$EVOLUTION_CONFIG_DIR" ] && cp -r "$EVOLUTION_CONFIG_DIR" "$SAFETY_BACKUP/evolution-backup" 2>/dev/null [ -d "$EVOLUTION_CONFIG_DIR" ] && cp -r "$EVOLUTION_CONFIG_DIR" "$SAFETY_BACKUP/evolution-backup" 2>/dev/null
[ -d "$SSH_CONFIG_DIR" ] && cp -r "$SSH_CONFIG_DIR" "$SAFETY_BACKUP/ssh-backup" 2>/dev/null
print_success "Sauvegarde de sécurité créée: $SAFETY_BACKUP" print_success "Sauvegarde de sécurité créée: $SAFETY_BACKUP"
# Restaurer GNOME Online Accounts # Restaurer GNOME Online Accounts
if [ -d "$RESTORE_DIR/goa-1.0" ]; then if [ -d "$RESTORE_DIR/goa-1.0" ]; then
print_info "Restauration des comptes en ligne..." print_info "Restauration des comptes en ligne..."
@@ -436,7 +507,7 @@ restore_accounts_network() {
cp -r "$RESTORE_DIR/goa-1.0" "$GOA_CONFIG_DIR" 2>/dev/null cp -r "$RESTORE_DIR/goa-1.0" "$GOA_CONFIG_DIR" 2>/dev/null
print_success "Comptes en ligne restaurés" print_success "Comptes en ligne restaurés"
fi fi
# Restaurer Evolution # Restaurer Evolution
if [ -d "$RESTORE_DIR/evolution" ]; then if [ -d "$RESTORE_DIR/evolution" ]; then
print_info "Restauration de la configuration Evolution..." print_info "Restauration de la configuration Evolution..."
@@ -444,14 +515,71 @@ restore_accounts_network() {
cp -r "$RESTORE_DIR/evolution"/* "$EVOLUTION_CONFIG_DIR/" 2>/dev/null cp -r "$RESTORE_DIR/evolution"/* "$EVOLUTION_CONFIG_DIR/" 2>/dev/null
print_success "Configuration Evolution restaurée" print_success "Configuration Evolution restaurée"
fi fi
# Restaurer la configuration SSH
if [ -d "$RESTORE_DIR/ssh" ]; then
print_warning "ATTENTION: Restauration de la configuration SSH avec clés privées!"
read -p "Restaurer la configuration SSH (clés privées incluses)? (y/N): " restore_ssh
if [[ "$restore_ssh" =~ ^[Yy]$ ]]; then
print_info "Restauration de la configuration SSH..."
# Créer le répertoire SSH s'il n'existe pas
mkdir -p "$SSH_CONFIG_DIR"
chmod 700 "$SSH_CONFIG_DIR"
# Copier tous les fichiers SSH
cp -r "$RESTORE_DIR/ssh"/* "$SSH_CONFIG_DIR/" 2>/dev/null
# Restaurer les permissions correctes
chmod 700 "$SSH_CONFIG_DIR"
find "$SSH_CONFIG_DIR" -type f -name "*" ! -name "*.pub" ! -name "config" ! -name "known_hosts*" ! -name "ssh-inventory.txt" -exec chmod 600 {} \; 2>/dev/null
find "$SSH_CONFIG_DIR" -name "*.pub" -exec chmod 644 {} \; 2>/dev/null
[ -f "$SSH_CONFIG_DIR/config" ] && chmod 600 "$SSH_CONFIG_DIR/config"
[ -f "$SSH_CONFIG_DIR/known_hosts" ] && chmod 644 "$SSH_CONFIG_DIR/known_hosts"
# Supprimer le fichier d'inventaire s'il a été copié
[ -f "$SSH_CONFIG_DIR/ssh-inventory.txt" ] && rm -f "$SSH_CONFIG_DIR/ssh-inventory.txt"
print_success "Configuration SSH restaurée"
# Afficher les clés restaurées
if command -v ssh-keygen &> /dev/null; then
print_info "Clés publiques restaurées:"
find "$SSH_CONFIG_DIR" -name "*.pub" | while read -r pubkey; do
if [ -f "$pubkey" ]; then
keyname=$(basename "$pubkey")
echo " - $keyname"
ssh-keygen -lf "$pubkey" 2>/dev/null | sed 's/^/ /'
fi
done
fi
# Démarrer ssh-agent si pas déjà fait et ajouter les clés
if command -v ssh-add &> /dev/null; then
print_info "Tentative d'ajout des clés à l'agent SSH..."
if [ -z "$SSH_AUTH_SOCK" ]; then
eval $(ssh-agent -s) 2>/dev/null
fi
# Ajouter toutes les clés privées trouvées
find "$SSH_CONFIG_DIR" -type f -name "*" ! -name "*.pub" ! -name "config" ! -name "known_hosts*" | while read -r private_key; do
if [ -f "$private_key" ]; then
ssh-add "$private_key" 2>/dev/null && echo " Clé ajoutée: $(basename "$private_key")" || true
fi
done
fi
else
print_info "Restauration SSH ignorée"
fi
fi
# Restaurer les paramètres des comptes # Restaurer les paramètres des comptes
if [ -f "$RESTORE_DIR/accounts-settings.dconf" ] && [ -s "$RESTORE_DIR/accounts-settings.dconf" ]; then if [ -f "$RESTORE_DIR/accounts-settings.dconf" ] && [ -s "$RESTORE_DIR/accounts-settings.dconf" ]; then
print_info "Restauration des paramètres des comptes..." print_info "Restauration des paramètres des comptes..."
dconf load / < "$RESTORE_DIR/accounts-settings.dconf" 2>/dev/null dconf load / < "$RESTORE_DIR/accounts-settings.dconf" 2>/dev/null
print_success "Paramètres des comptes restaurés" print_success "Paramètres des comptes restaurés"
fi fi
# Restaurer les connexions réseau # Restaurer les connexions réseau
if [ -d "$RESTORE_DIR/network-connections" ]; then if [ -d "$RESTORE_DIR/network-connections" ]; then
print_info "Restauration des connexions réseau..." print_info "Restauration des connexions réseau..."
@@ -463,7 +591,7 @@ restore_accounts_network() {
print_warning "Sudo requis pour restaurer les connexions système - ignoré" print_warning "Sudo requis pour restaurer les connexions système - ignoré"
fi fi
fi fi
# Restaurer la configuration réseau utilisateur # Restaurer la configuration réseau utilisateur
if [ -d "$RESTORE_DIR/user-network-config" ]; then if [ -d "$RESTORE_DIR/user-network-config" ]; then
print_info "Restauration de la configuration réseau utilisateur..." print_info "Restauration de la configuration réseau utilisateur..."
@@ -471,38 +599,38 @@ restore_accounts_network() {
cp -r "$RESTORE_DIR/user-network-config" "$USER_NETWORK_CONFIG_DIR" 2>/dev/null cp -r "$RESTORE_DIR/user-network-config" "$USER_NETWORK_CONFIG_DIR" 2>/dev/null
print_success "Configuration réseau utilisateur restaurée" print_success "Configuration réseau utilisateur restaurée"
fi fi
# Restaurer les paramètres de partage # Restaurer les paramètres de partage
if [ -f "$RESTORE_DIR/sharing-settings.dconf" ] && [ -s "$RESTORE_DIR/sharing-settings.dconf" ]; then if [ -f "$RESTORE_DIR/sharing-settings.dconf" ] && [ -s "$RESTORE_DIR/sharing-settings.dconf" ]; then
print_info "Restauration des paramètres de partage..." print_info "Restauration des paramètres de partage..."
dconf load / < "$RESTORE_DIR/sharing-settings.dconf" 2>/dev/null dconf load / < "$RESTORE_DIR/sharing-settings.dconf" 2>/dev/null
print_success "Paramètres de partage restaurés" print_success "Paramètres de partage restaurés"
fi fi
# Restaurer les trousseaux de clés et mots de passe # Restaurer les trousseaux de clés et mots de passe
if [ -d "$RESTORE_DIR/keyring-files" ]; then if [ -d "$RESTORE_DIR/keyring-files" ]; then
print_warning "ATTENTION: Restauration des trousseaux de clés avec mots de passe!" print_warning "ATTENTION: Restauration des trousseaux de clés avec mots de passe!"
read -p "Restaurer les mots de passe sauvegardés? (y/N): " restore_passwords read -p "Restaurer les mots de passe sauvegardés? (y/N): " restore_passwords
if [[ "$restore_passwords" =~ ^[Yy]$ ]]; then if [[ "$restore_passwords" =~ ^[Yy]$ ]]; then
print_info "Restauration des fichiers de trousseau..." print_info "Restauration des fichiers de trousseau..."
# Sauvegarder les trousseaux actuels # Sauvegarder les trousseaux actuels
[ -d "$KEYRING_DIR" ] && cp -r "$KEYRING_DIR" "$SAFETY_BACKUP/keyring-backup" 2>/dev/null [ -d "$KEYRING_DIR" ] && cp -r "$KEYRING_DIR" "$SAFETY_BACKUP/keyring-backup" 2>/dev/null
# Restaurer les trousseaux # Restaurer les trousseaux
mkdir -p "$HOME/.local/share" mkdir -p "$HOME/.local/share"
rm -rf "$KEYRING_DIR" 2>/dev/null rm -rf "$KEYRING_DIR" 2>/dev/null
cp -r "$RESTORE_DIR/keyring-files/keyrings" "$KEYRING_DIR" 2>/dev/null cp -r "$RESTORE_DIR/keyring-files/keyrings" "$KEYRING_DIR" 2>/dev/null
print_success "Trousseaux de clés restaurés" print_success "Trousseaux de clés restaurés"
# Restaurer les mots de passe WiFi # Restaurer les mots de passe WiFi
if [ -f "$RESTORE_DIR/keyring-passwords/restore-secrets.sh" ]; then if [ -f "$RESTORE_DIR/keyring-passwords/restore-secrets.sh" ]; then
print_info "Exécution du script de restauration des secrets..." print_info "Exécution du script de restauration des secrets..."
bash "$RESTORE_DIR/keyring-passwords/restore-secrets.sh" 2>/dev/null bash "$RESTORE_DIR/keyring-passwords/restore-secrets.sh" 2>/dev/null
print_success "Script de restauration exécuté" print_success "Script de restauration exécuté"
fi fi
# Redémarrer le démon gnome-keyring si possible # Redémarrer le démon gnome-keyring si possible
if pgrep -x "gnome-keyring-daemon" > /dev/null; then if pgrep -x "gnome-keyring-daemon" > /dev/null; then
print_info "Redémarrage du démon gnome-keyring..." print_info "Redémarrage du démon gnome-keyring..."
@@ -523,28 +651,30 @@ restore_accounts_network() {
cp "$RESTORE_DIR/gtk-bookmarks" "$HOME/.config/gtk-3.0/bookmarks" 2>/dev/null cp "$RESTORE_DIR/gtk-bookmarks" "$HOME/.config/gtk-3.0/bookmarks" 2>/dev/null
print_success "Signets de fichiers restaurés" print_success "Signets de fichiers restaurés"
fi fi
# Nettoyer # Nettoyer
rm -rf "$TEMP_DIR" rm -rf "$TEMP_DIR"
print_success "Restauration terminée!" print_success "Restauration terminée!"
print_warning "Actions recommandées :" print_warning "Actions recommandées :"
print_warning "1. Redémarrez votre session complètement (déconnexion/reconnexion)" print_warning "1. Redémarrez votre session complètement (déconnexion/reconnexion)"
print_warning "2. Vérifiez vos comptes dans Paramètres > Comptes en ligne" print_warning "2. Vérifiez vos comptes dans Paramètres > Comptes en ligne"
print_warning "3. Testez vos connexions WiFi" print_warning "3. Testez vos connexions WiFi"
print_warning "4. Relancez Evolution si vous l'utilisez" print_warning "4. Testez vos connexions SSH (ssh-add -l pour voir les clés chargées)"
print_warning "5. Si les mots de passe ne fonctionnent pas, vérifiez les fichiers dans keyring-passwords/" print_warning "5. Relancez Evolution si vous l'utilisez"
print_warning "6. Si les mots de passe ne fonctionnent pas, vérifiez les fichiers dans keyring-passwords/"
print_warning "7. Vérifiez les permissions de vos clés SSH (~/.ssh/)"
} }
# Fonction pour lister les sauvegardes # Fonction pour lister les sauvegardes
list_backups() { list_backups() {
print_info "Sauvegardes disponibles:" print_info "Sauvegardes disponibles:"
if [ ! -d "$BACKUP_DIR" ]; then if [ ! -d "$BACKUP_DIR" ]; then
print_warning "Répertoire de sauvegarde non trouvé: $BACKUP_DIR" print_warning "Répertoire de sauvegarde non trouvé: $BACKUP_DIR"
return return
fi fi
for backup in "$BACKUP_DIR"/gnome-accounts-network-*.tar.gz; do for backup in "$BACKUP_DIR"/gnome-accounts-network-*.tar.gz; do
if [ -f "$backup" ]; then if [ -f "$backup" ]; then
filename=$(basename "$backup") filename=$(basename "$backup")
@@ -552,7 +682,7 @@ list_backups() {
readable_date=$(echo "$date_part" | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)_\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\3\/\2\/\1 \4:\5:\6/') readable_date=$(echo "$date_part" | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)_\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\3\/\2\/\1 \4:\5:\6/')
size=$(du -h "$backup" | cut -f1) size=$(du -h "$backup" | cut -f1)
echo " - $filename (Taille: $size, Date: $readable_date)" echo " - $filename (Taille: $size, Date: $readable_date)"
# Vérifier les fichiers associés # Vérifier les fichiers associés
metadata_file="$BACKUP_DIR/backup-metadata-$date_part.txt" metadata_file="$BACKUP_DIR/backup-metadata-$date_part.txt"
if [ -f "$metadata_file" ]; then if [ -f "$metadata_file" ]; then
@@ -560,7 +690,7 @@ list_backups() {
fi fi
fi fi
done done
if [ -z "$(ls -A "$BACKUP_DIR"/gnome-accounts-network-*.tar.gz 2>/dev/null)" ]; then if [ -z "$(ls -A "$BACKUP_DIR"/gnome-accounts-network-*.tar.gz 2>/dev/null)" ]; then
print_warning "Aucune sauvegarde trouvée" print_warning "Aucune sauvegarde trouvée"
fi fi
@@ -569,15 +699,15 @@ list_backups() {
# Fonction pour nettoyer les anciennes sauvegardes # Fonction pour nettoyer les anciennes sauvegardes
cleanup_backups() { cleanup_backups() {
print_info "Nettoyage des anciennes sauvegardes..." print_info "Nettoyage des anciennes sauvegardes..."
if [ ! -d "$BACKUP_DIR" ]; then if [ ! -d "$BACKUP_DIR" ]; then
print_warning "Répertoire de sauvegarde non trouvé" print_warning "Répertoire de sauvegarde non trouvé"
return return
fi fi
read -p "Combien de sauvegardes souhaitez-vous conserver? (défaut: 3): " keep_count read -p "Combien de sauvegardes souhaitez-vous conserver? (défaut: 3): " keep_count
keep_count=${keep_count:-3} keep_count=${keep_count:-3}
# Supprimer les anciennes sauvegardes (garder les plus récentes) # Supprimer les anciennes sauvegardes (garder les plus récentes)
ls -t "$BACKUP_DIR"/gnome-accounts-network-*.tar.gz 2>/dev/null | tail -n +$((keep_count + 1)) | while read -r old_backup; do ls -t "$BACKUP_DIR"/gnome-accounts-network-*.tar.gz 2>/dev/null | tail -n +$((keep_count + 1)) | while read -r old_backup; do
if [ -f "$old_backup" ]; then if [ -f "$old_backup" ]; then
@@ -588,7 +718,7 @@ cleanup_backups() {
rm -rf "$BACKUP_DIR/safety-backup-"* 2>/dev/null rm -rf "$BACKUP_DIR/safety-backup-"* 2>/dev/null
fi fi
done done
print_success "Nettoyage terminé" print_success "Nettoyage terminé"
} }
@@ -596,7 +726,7 @@ cleanup_backups() {
show_accounts_info() { show_accounts_info() {
print_info "Informations sur les comptes et connexions actuels:" print_info "Informations sur les comptes et connexions actuels:"
echo "" echo ""
# Comptes en ligne GNOME # Comptes en ligne GNOME
if [ -d "$GOA_CONFIG_DIR" ]; then if [ -d "$GOA_CONFIG_DIR" ]; then
echo "📧 Comptes en ligne GNOME:" echo "📧 Comptes en ligne GNOME:"
@@ -609,7 +739,43 @@ show_accounts_info() {
done done
echo "" echo ""
fi fi
# Configuration SSH
if [ -d "$SSH_CONFIG_DIR" ]; then
echo "🔐 Configuration SSH:"
# Lister les clés SSH
echo " Clés SSH disponibles:"
find "$SSH_CONFIG_DIR" -name "*.pub" | while read -r pubkey; do
if [ -f "$pubkey" ]; then
keyname=$(basename "$pubkey" .pub)
echo " - $keyname"
if command -v ssh-keygen &> /dev/null; then
fingerprint=$(ssh-keygen -lf "$pubkey" 2>/dev/null | awk '{print $2}')
[ -n "$fingerprint" ] && echo " Empreinte: $fingerprint"
fi
fi
done
# Analyser le fichier config SSH
if [ -f "$SSH_CONFIG_DIR/config" ]; then
echo " Hosts configurés dans ~/.ssh/config:"
grep -E "^Host " "$SSH_CONFIG_DIR/config" 2>/dev/null | sed 's/Host / - /' || echo " Aucun host configuré"
fi
# Clés chargées dans l'agent SSH
if command -v ssh-add &> /dev/null && [ -n "$SSH_AUTH_SOCK" ]; then
echo " Clés chargées dans l'agent SSH:"
ssh_keys_loaded=$(ssh-add -l 2>/dev/null)
if [ $? -eq 0 ]; then
echo "$ssh_keys_loaded" | sed 's/^/ /'
else
echo " Aucune clé chargée ou agent SSH non disponible"
fi
fi
echo ""
fi
# Connexions réseau # Connexions réseau
if command -v nmcli &> /dev/null; then if command -v nmcli &> /dev/null; then
echo "🌐 Connexions réseau configurées:" echo "🌐 Connexions réseau configurées:"
@@ -620,7 +786,7 @@ show_accounts_info() {
done done
echo "" echo ""
fi fi
# Signets de fichiers # Signets de fichiers
if [ -f "$HOME/.config/gtk-3.0/bookmarks" ]; then if [ -f "$HOME/.config/gtk-3.0/bookmarks" ]; then
echo "📁 Signets de fichiers/réseau:" echo "📁 Signets de fichiers/réseau:"
@@ -640,6 +806,7 @@ show_help() {
echo "Ce script sauvegarde et restaure :" echo "Ce script sauvegarde et restaure :"
echo " • Comptes en ligne GNOME (Google, Microsoft, Nextcloud, etc.)" echo " • Comptes en ligne GNOME (Google, Microsoft, Nextcloud, etc.)"
echo " • Configuration Evolution (comptes mail)" echo " • Configuration Evolution (comptes mail)"
echo " • Configuration SSH (clés privées, clés publiques, fichier config)"
echo " • Connexions réseau WiFi/Ethernet" echo " • Connexions réseau WiFi/Ethernet"
echo " • Paramètres de partage réseau" echo " • Paramètres de partage réseau"
echo " • Signets de fichiers réseau" echo " • Signets de fichiers réseau"
@@ -655,9 +822,10 @@ show_help() {
echo " help, -h Afficher cette aide" echo " help, -h Afficher cette aide"
echo "" echo ""
echo "IMPORTANT:" echo "IMPORTANT:"
echo " ⚠ Les mots de passe SONT sauvegardés (non sécurisé)" echo " ⚠ Les mots de passe SONT sauvegardés (non sécurisé)"
echo " ⚠ Protégez absolument vos fichiers de sauvegarde" echo " ⚠ Les clés SSH privées SONT sauvegardées (TRÈS sensible!)"
echo " ⚠ Ne partagez jamais ces sauvegardes" echo " ⚠ Protégez absolument vos fichiers de sauvegarde"
echo " ⚠ Ne partagez jamais ces sauvegardes"
echo " • Sudo peut être requis pour les connexions système" echo " • Sudo peut être requis pour les connexions système"
echo "" echo ""
echo "Répertoire de sauvegarde: $BACKUP_DIR" echo "Répertoire de sauvegarde: $BACKUP_DIR"
@@ -666,13 +834,13 @@ show_help() {
# Fonction pour afficher le menu principal # Fonction pour afficher le menu principal
show_menu() { show_menu() {
echo "" echo ""
echo "==================================================" echo "=========================================================="
echo " Script de gestion des comptes et réseau GNOME" echo " Script de gestion des comptes, réseau et SSH GNOME"
echo "==================================================" echo "=========================================================="
echo "" echo ""
echo "Choisissez une action:" echo "Choisissez une action:"
echo "1) Sauvegarder les comptes et réseau" echo "1) Sauvegarder les comptes, réseau et SSH"
echo "2) Restaurer les comptes et réseau" echo "2) Restaurer les comptes, réseau et SSH"
echo "3) Lister les sauvegardes" echo "3) Lister les sauvegardes"
echo "4) Nettoyer les anciennes sauvegardes" echo "4) Nettoyer les anciennes sauvegardes"
echo "5) Afficher les comptes/connexions actuels" echo "5) Afficher les comptes/connexions actuels"
@@ -684,7 +852,7 @@ show_menu() {
# Fonction pour demander de continuer # Fonction pour demander de continuer
ask_continue() { ask_continue() {
echo "" echo ""
echo "==================================================" echo "=========================================================="
read -p "Appuyez sur Entrée pour revenir au menu principal..." read -p "Appuyez sur Entrée pour revenir au menu principal..."
echo "" echo ""
} }
@@ -694,7 +862,7 @@ interactive_menu() {
while true; do while true; do
show_menu show_menu
read -p "Votre choix (1-7): " choice read -p "Votre choix (1-7): " choice
case $choice in case $choice in
1) 1)
check_requirements && backup_accounts_network check_requirements && backup_accounts_network
@@ -762,4 +930,4 @@ main() {
esac esac
} }
main "$@" main "$@"