[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-clients-linux/home/netlogon/clients-linux/distribs/precise/integration/ -> desintegration_precise.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 Precise Pangolin.
 111  if [ "$NOM_DE_CODE" != "precise" ]; then
 112      afficher "Désolé, le script doit être exécuté sur Ubuntu Precise Pangolin." \
 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/lightdm"
 165  if [ -f "/etc/pam.d/gnome-screensaver" ]; then
 166      restaurer_via_save "/etc/pam.d/gnome-screensaver"
 167  fi
 168  if [ -f "/etc/pam.d/xscreensaver" ]; then
 169      restaurer_via_save "/etc/pam.d/xscreensaver"
 170  fi
 171  
 172  # Le fichier lightdm.
 173  restaurer_via_save "/etc/lightdm/lightdm.conf"
 174  
 175  # Divers
 176  restaurer_via_save "/etc/xdg/user-dirs.defaults"
 177  restaurer_via_save "/usr/share/polkit-1/actions/org.freedesktop.upower.policy"
 178  
 179  # Restauration par défaut du daemon avahi-daemon.
 180  update-rc.d avahi-daemon defaults >/dev/null 2>&1
 181  
 182  
 183  
 184  
 185  
 186  afficher "Fin de la désintégration. Il reste encore le répertoire $REP_SE3_LOCAL" \
 187           "sur la machine que vous pourrez supprimer en tant que root avec la" \
 188           "commande « rm -fr \"$REP_SE3_LOCAL\" ». De plus, sur le serveur," \
 189           "pensez à supprimer toute trace de la machine cliente (notamment dans" \
 190           "l'annuaire du serveur)."
 191  
 192  if "$OPTION_REDEMARRER"; then
 193      afficher "La machine va redémarrer dans 10 secondes."
 194      echo ""            
 195      for i in 1 2 3 4 5 6 7 8 9 10; do 
 196          sleep 1
 197          echo -n "$i... "
 198      done
 199      printf "\n"
 200      reboot
 201      exit 0
 202  else
 203      afficher "Pour pour que le système soit opérationnel, vous devez le redémarrer."
 204      exit 0
 205  fi
 206  
 207  
 208  


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