[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-clients-linux/home/netlogon/clients-linux/.test/ -> desintegration_wheezy.bash (source)

   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  


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1