[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/usr/share/se3/scripts/ -> unattended_generate.sh (source)

   1  #!/bin/bash
   2  # Auteur: Olivier Lacroix
   3  #
   4  ## $Id: unattended_generate.sh 3655 2009-04-05 21:39:16Z olikin $ ##
   5  #
   6  ##### script generant les fichiers et modifications necessaires au fonctionnement automatise d'unattended #####
   7  #
   8  # 
   9  
  10  # FAIT :
  11  # 1. genere unattend.csv 
  12  # - en partant de os.txt (et non de mysql) 
  13  # - en utilisant les fichiers computer.txt si presents pour une configuration de windows personnalisee
  14  # 2. verifie la configuration du dhcp pour voir si tout est correct (compte unattend ldap <-> dhcp.conf ) et corrige si besoin
  15  
  16  # A FAIRE :
  17  # possibilite de personnaliser l'os par type de poste (creer les pages php et aller chercher chercher le productkey dans mysql)
  18  
  19  
  20  #### A DECOMMENTER PLUS TARD ######
  21  #if [ "$(dpkg -l | grep se3-unattend)" == "" ]; then
  22    # on teste la presence du paquet unattend pour se3
  23  # echo "Le paquet se3-unattend n est pas installe : dans le menu module, ajouter le."
  24   # exit 0
  25  #fi
  26  
  27  
  28  function usage {
  29          echo "Configure le compte unattend dans l'annuaire LDAP en fonction des parametres DHCP."
  30      echo "Genere un fichier unattend.csv en fonction des données de l'annuaire et des fichiers présents dans site."
  31      echo
  32          echo "Usage : Aucune option pour une execution complete."
  33          echo "        -u update unattend.csv uniquement (pour ne pas ralentir l'interface SE3)"
  34      exit $1;
  35  }
  36  
  37  while getopts "uh-:" cmd
  38  do
  39                case $cmd in
  40                          u) UNATTENDCSVUPDATE=1 ;;
  41              h) usage 0 ;;
  42              ?) echo "Mauvaise option."
  43                 usage 1 ;;
  44                esac
  45  done
  46  
  47  
  48  LOCKFILE=/tmp/unattendgenerate
  49  # securite pour eviter plusieurs exec simultanees
  50  if [ -e $LOCKFILE ];
  51  then
  52    echo "Script deja en cours d execution"
  53    exit 1
  54  fi
  55  ######## A DECOMMENTER PLUS TARD ########
  56  echo "en cours" > $LOCKFILE
  57  
  58  #initialisation des variables #
  59  # Recuperation des parametres mysql
  60  
  61  . /usr/share/se3/includes/config.inc.sh -d -m -c -l -s
  62  
  63  # Recuperation des params LDAP
  64  BASEDN="$ldap_base_dn"
  65  ADMINRDN="$adminRdn"
  66  ADMINPW="$adminPw"
  67  COMPUTERDN="$computersRdn"
  68  PARCDN="$parcsRdn"
  69  SMBVERSION="$smbversion"
  70  if [ ! "$SMBVERSION" = "samba3" ]; then
  71          echo "Version de samba incorrecte."
  72      rm -f $LOCKFILE
  73          exit 1
  74  fi
  75  
  76  DATE="`date +%F`"
  77  DOMAINSE3="$se3_domain"
  78  NETBIOSSE3="$netbios_name"
  79  
  80  # FAIT PAR se3-domain
  81  #echo -e "set SE3IP=$se3ip\r
  82  #set urlse3=$urlse3\r" > /home/netlogon/domscripts/se3ip.bat
  83  
  84  ##### valeurs finales ##########
  85  #export REPOS=/var/se3/unattended/install/os
  86  export REPSITE=/var/se3/unattended/install/site
  87  ##### valeurs pour tests #######
  88  export REPOS=/root
  89  #REPSITE=/root
  90  UNATTENDTXT=unattend.txt
  91  
  92  ##### variables a stocker dans mysql ########
  93  if [ -e /var/se3/unattended/install/os/xp.txt ] ; then
  94    PRODUCTKEY="`cat /var/se3/unattended/install/os/xp.txt | grep "^PRODUCTKEY=" | cut -d= -f2 | sed 's/\r//g' | sed 's/ //g' | sed 's/:/-/g'`"
  95    NOMOS="`cat /var/se3/unattended/install/os/xp.txt | grep "^OSNAME=" | cut -d= -f2 | sed 's/\r//g' `"
  96  else
  97    NOMOS="Windows XP Professionnel"
  98    PRODUCTKEY="*****-*****-*****-*****-*****"
  99  fi
 100  ##### A gerer dans l'interface: personnalisation de l'os par type de poste
 101  
 102  UNATTENDCSV=$REPSITE/unattend.csv
 103  export REPDRIVERS=/var/se3/unattended/install/drivers
 104  mkdir -p $REPSITE
 105  mkdir -p /var/se3/unattended/install/os
 106  rm -f $UNATTENDCSV
 107  cp /home/netlogon/domscripts/unattend.csv $UNATTENDCSV
 108  #mkdir -p $REPDRIVERS
 109  #chown -R adminse3 $REPDRIVERS
 110  
 111  
 112  
 113  ########## verification du compte unattend et de la conf dhcp correspondante ############
 114  
 115  if [ "$UNATTENDCSVUPDATE" != "1" ]; then
 116    # on vérifie si la conf dhcp est correcte pour unattended et si l'utilisateur unattend est correctement parametre dans LDAP
 117    UNATTLOGIN="$dhcp_unatt_login"
 118    UNATTPASS="$dhcp_unatt_pass"
 119    
 120    echo "Mise en conformite du compte unattend dans l'annuaire et la configuration DHCP"
 121    
 122    if [ ! "$UNATTLOGIN" == "unattend" -o "$UNATTLOGIN" == "" ] ; then
 123      MODIFDHCP=1
 124      echo "Mise a jour de dhcp_unatt_login en unattend dans la table DHCP"
 125      echo "UPDATE params SET value='unattend' WHERE name='dhcp_unatt_login'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N
 126    fi
 127    
 128    # si dhcp_unatt_pass absent de la table DHCP, on le cree aleatoirement
 129    if [ "$UNATTPASS" == "" ] ; then
 130      MODIFDHCP=1
 131      UNATTPASS="$(makepasswd --chars=8)"
 132      echo "Le dhcp_unatt_pass est vide dans la table params (DHCP) : generation d'un mot de passe aleatoire."
 133      echo "UPDATE params SET value='$UNATTPASS' WHERE name='dhcp_unatt_pass'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N
 134    fi
 135    
 136    # Verification de la presence d'unattend dans l'annuaire
 137    UNATTENDLDAP=`ldapsearch -x -b ou=People,$BASEDN uid | grep "^uid: " | cut -d" " -f2 | grep "^unattend$"`
 138    #echo "Retour LDAP : $UNATTENDLDAP"
 139    if [ "$UNATTENDLDAP" == "" ]; then
 140        #echo "Le compte unattend est absent, on le cree"
 141       UIDPOLICY="$uidPolicy"
 142        echo "UPDATE params SET value='4' WHERE name='uidPolicy'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass
 143        /usr/share/se3/sbin/userAdd.pl Dom Unatten $UNATTPASS 19790921 M Administratifs
 144        echo "UPDATE params SET value=\"$UIDPOLICY\" WHERE name='uidPolicy'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass
 145      [ -e /var/se3/unattended/install/packages ] && (
 146      setfacl -R -m u:unattend:rx /var/se3/unattended/install/packages
 147      setfacl -R -m d:u:unattend:rx /var/se3/unattended/install/packages
 148      setfacl -R -m u:www-se3:rx /var/se3/unattended/install/packages
 149      setfacl -R -m d:u:www-se3:rx /var/se3/unattended/install/packages
 150      )
 151    else
 152      #echo "Unattend est present dans l'annuaire"
 153      # si le mot de passe est present dans l'interface dhcp, on l'impose a unattend
 154      # sinon, on impose un mot de passe aleatoire des deux cotes.
 155      #echo "On impose à unattend le mdp present dans la table params."
 156      /usr/share/se3/sbin/userChangePwd.pl unattend $UNATTPASS
 157    fi
 158    . /usr/share/se3/includes/config.inc.sh -svmf
 159    # on regenere la conf DHCP si il y a eu une modif
 160    [ "$MODIFDHCP" == "1" ] && [ -e /usr/share/se3/scripts/makedhcpdconf ] && /usr/share/se3/scripts/makedhcpdconf
 161  fi
 162  
 163  ##################### creation de unattend.csv #################################
 164  touch /tmp/csvtodo
 165  /usr/share/se3/sbin/update-csv.sh 
 166  # Envoi de l'e-mail rapport
 167  if [ -e /tmp/emailunattended_generate ] ; then
 168    cat /tmp/emailunattended_generate
 169    mail root -s"[Annuaire du SE3 a nettoyer] ERREUR" < /tmp/emailunattended_generate
 170    rm /tmp/emailunattended_generate
 171  fi
 172  [ -e $LOCKFILE ] && rm $LOCKFILE
 173  exit 0
 174  
 175  


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