[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #! /bin/bash 2 3 # Pour avoir des sorties les plus simples possibles, c'est-à-dire 4 # en anglais avec des caractères 100% ASCII ! Ce changement de locales 5 # est temporaire et ne durera que le temps de l'exécution du script. 6 export LC_ALL="C" 7 8 # Pour faire des installations via apt-get non interactives. 9 export DEBIAN_FRONTEND=noninteractive 10 11 12 13 NOM_DU_SCRIPT=$0##*/} 14 NOM_DE_CODE=$(lsb_release --codename | cut -f 2) 15 REP_SE3_LOCAL="/etc/se3" 16 REP_SAVE_LOCAL="$REP_SE3_LOCAL/save" 17 REP_TMP_LOCAL="$REP_SE3_LOCAL/tmp" 18 REP_MONTAGE="/mnt" 19 REP_NETLOGON="$REP_MONTAGE/netlogon" 20 PAM_SCRIPT_AUTH="/usr/share/libpam-script/pam_script_auth" 21 22 23 # Fonction pour afficher des messages. 24 function afficher () 25 { 26 echo "" 27 # On écrira des lignes de 65 caractères maximum. 28 echo "$@" | fmt -w 65 29 sleep 0.5 30 } 31 32 function restaurer_via_save () 33 { 34 # Si la cible existe déjà, elle sera écrasée. 35 cp -a "$REP_SAVE_LOCAL}$1" "$1" 36 } 37 38 39 40 41 42 LISTE_OPTIONS=$(getopt --options h --longoptions "help,redemarrer-client,rc" -n "$NOM_DU_SCRIPT" -- "$@") 43 44 # Si l'appel est syntaxiquement incorrect on arrête le script. 45 if [ $? != 0 ] ; then echo "Arrêt du script $NOM_DU_SCRIPT." >&2; exit 1; fi 46 47 # Évaluation de la chaîne $LISTE_OPTIONS afin de positionner 48 # $1, $2 comme étant la succession des mots de $LISTE_OPTIONS. 49 eval set -- "$LISTE_OPTIONS" 50 51 # On peut détruire la variable LISTE_OPTIONS. 52 unset -v LISTE_OPTIONS 53 54 # On définit des variables indiquant si les options ont été 55 # appelées. Par défaut, elles ont la valeur "false", c'est-à-dire 56 # qu'il n'y a pas eu appel des options. 57 OPTION_REDEMARRER="false" 58 59 60 # La commande shift décale les paramètres $1, $2 etc. 61 # Par exemple après "shift 2" $3 devient accessible via $1 etc. 62 # On sortira forcément de la boucle car (et c'est entre autres le 63 # travail de getopt), la chaîne LISTE_OPTIONS évaluée précédemment 64 # contient forcément un "--" qui séparent les options (à gauche) et les 65 # arguments du script et qui ne sont pas des options (à droite de --). 66 while true ; do 67 case "$1" in 68 69 -h|--help) 70 echo "Aide : voir la documentation (au format pdf) associée." 71 exit 0 72 ;; 73 74 --redemarrer-client|--rc) 75 OPTION_REDEMARRER="true" 76 shift 1 77 ;; 78 79 --) 80 shift 81 break 82 ;; 83 84 *) 85 echo "Erreur: «$1» est une option non implémentée." 86 exit 1 87 ;; 88 89 esac 90 done 91 92 93 94 95 96 97 98 99 100 # On vérifie que l'utilisateur a bien les droits de root. 101 # Tester « "$USER" == "root" » est possible mais la variable 102 # $USER peut être modifiée par n'importe quel utilisateur, 103 # tandis que la variable $UID est en lecture seule. 104 if [ "$UID" != "0" ]; then 105 afficher "Désolé, vous devez avoir les droits « root » pour lancer" \ 106 "le script. Fin du script." 107 exit 1 108 fi 109 110 # On vérifie que le système est bien Debian Wheezy. 111 if [ "$NOM_DE_CODE" != "wheezy" ]; then 112 afficher "Désolé, le script doit être exécuté sur Debian Wheezy." \ 113 "Fin du script." 114 exit 1 115 fi 116 117 # Vérification du bon fonctionnement de « apt-get update ». 118 # Cette commande semble renvoyer la valeur 0 à chaque fois, 119 # même quand les dépôts ne sont pas accessibles par exemple. 120 # Du coup, je ne vois rien de mieux que de compter le nombre 121 # de lignes écrites sur la sortie standard des erreurs. 122 if [ $(apt-get update 2>&1 >/dev/null | wc -l) -gt 0 ]; then 123 afficher "Désolé, la commande « apt-get update » ne fonctionne pas" \ 124 "correctement. Il y des erreurs que vous devez rectifier." \ 125 "Relancez le script ensuite. Fin du script." 126 exit 1 127 fi 128 129 130 131 132 133 134 135 # On démonte les deux montages potentiels dûs à l'intégration 136 # et on supprime les répertoires. 137 mountpoint -q "$REP_NETLOGON" && umount "$REP_NETLOGON" 138 [ -e "$REP_NETLOGON" ] && rm -fr "$REP_NETLOGON" 139 mountpoint -q "$REP_TMP_LOCAL" && umount "$REP_TMP_LOCAL" 140 [ -e "$REP_TMP_LOCAL" ] && rm -fr "$REP_TMP_LOCAL" 141 142 143 144 145 # Désinstallation des paquets. 146 afficher "Désinstallation des paquets ayant servi à l'intégration du client." 147 PAQUETS="cifs-utils ldap-utils rng-tools libnss-ldapd libpam-ldapd nscd nslcd libpam-script rsync ntpdate samba" 148 apt-get purge --yes $PAQUETS >/dev/null 2>&1 149 150 151 # Réinstallation de network-manager. 152 afficher "Réinstallation de network-manager." 153 apt-get install --yes network-manager network-manager-gnome > /dev/null 2>&1 154 155 156 afficher "Restauration des certains fichiers de configuration." 157 158 # Fichiers PAM. 159 for f in "/etc/pam.d/common-"*".AVEC-LDAP"; do 160 [ "$f" = "/etc/pam.d/common-*.AVEC-LDAP" ] && continue 161 rm -f "$f" 162 done 163 [ -f "$PAM_SCRIPT_AUTH" ] && rm -f "$PAM_SCRIPT_AUTH" 164 restaurer_via_save "/etc/pam.d/gdm3" 165 restaurer_via_save "/etc/pam.d/gnome-screensaver" 166 167 # Le client DHCP. 168 # Fichier non modifié sous Wheezy 169 #restaurer_via_save "/etc/dhcp/dhclient.conf" 170 171 # Les fichiers gmd3. 172 restaurer_via_save "/etc/gdm3/Init/Default" 173 [ -e "/etc/gdm3/PostLogin/Default" ] && rm -f "/etc/gdm3/PostLogin/Default" 174 restaurer_via_save "/etc/gdm3/PostSession/Default" 175 restaurer_via_save "/etc/gdm3/greeter.gsettings" 176 # Sans la présence explicite de l'option, la fenêtre de connexion 177 # gdm3 reste dans l'état précédent. C'est pourquoi on va 178 # explicitement afficher la liste des utilisateurs déjà connectés. 179 #echo "/apps/gdm/simple-greeter/disable_user_list false" >> "/etc/gdm3/greeter.gsettings" 180 sed -r -i -e 's/^\disable-user-list=true.*$/disable-user-list=false/g' /etc/gdm3/greeter.gsettings 181 # Divers 182 restaurer_via_save "/etc/xdg/user-dirs.defaults" 183 restaurer_via_save "/usr/share/polkit-1/actions/org.freedesktop.upower.policy" 184 185 # Restauration par défaut des daemons exim4 et avahi-daemon. 186 update-rc.d avahi-daemon defaults >/dev/null 2>&1 187 update-rc.d exim4 defaults >/dev/null 2>&1 188 189 190 191 192 193 afficher "Fin de la désintégration. Il reste encore le répertoire $REP_SE3_LOCAL" \ 194 "sur la machine que vous pourrez supprimer en tant que root avec la" \ 195 "commande « rm -fr \"$REP_SE3_LOCAL\" ». De plus, sur le serveur," \ 196 "pensez à supprimer toute trace de la machine cliente (notamment dans" \ 197 "l'annuaire du serveur)." 198 199 if "$OPTION_REDEMARRER"; then 200 afficher "La machine va redémarrer dans 10 secondes." 201 echo "" 202 for i in 1 2 3 4 5 6 7 8 9 10; do 203 sleep 1 204 echo -n "$i... " 205 done 206 printf "\n" 207 reboot 208 exit 0 209 else 210 afficher "Pour pour que le système soit opérationnel, vous devez le redémarrer." 211 exit 0 212 fi 213 214 215
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |