#!/bin/bash # Auteur: Olivier Lacroix # ## $Id: unattended_generate.sh 3655 2009-04-05 21:39:16Z olikin $ ## # ##### script generant les fichiers et modifications necessaires au fonctionnement automatise d'unattended ##### # # # FAIT : # 1. genere unattend.csv # - en partant de os.txt (et non de mysql) # - en utilisant les fichiers computer.txt si presents pour une configuration de windows personnalisee # 2. verifie la configuration du dhcp pour voir si tout est correct (compte unattend ldap <-> dhcp.conf ) et corrige si besoin # A FAIRE : # possibilite de personnaliser l'os par type de poste (creer les pages php et aller chercher chercher le productkey dans mysql) #### A DECOMMENTER PLUS TARD ###### #if [ "$(dpkg -l | grep se3-unattend)" == "" ]; then # on teste la presence du paquet unattend pour se3 # echo "Le paquet se3-unattend n est pas installe : dans le menu module, ajouter le." # exit 0 #fi function usage { echo "Configure le compte unattend dans l'annuaire LDAP en fonction des parametres DHCP." echo "Genere un fichier unattend.csv en fonction des données de l'annuaire et des fichiers présents dans site." echo echo "Usage : Aucune option pour une execution complete." echo " -u update unattend.csv uniquement (pour ne pas ralentir l'interface SE3)" exit $1; } while getopts "uh-:" cmd do case $cmd in u) UNATTENDCSVUPDATE=1 ;; h) usage 0 ;; ?) echo "Mauvaise option." usage 1 ;; esac done LOCKFILE=/tmp/unattendgenerate # securite pour eviter plusieurs exec simultanees if [ -e $LOCKFILE ]; then echo "Script deja en cours d execution" exit 1 fi ######## A DECOMMENTER PLUS TARD ######## echo "en cours" > $LOCKFILE #initialisation des variables # # Recuperation des parametres mysql . /usr/share/se3/includes/config.inc.sh -d -m -c -l -s # Recuperation des params LDAP BASEDN="$ldap_base_dn" ADMINRDN="$adminRdn" ADMINPW="$adminPw" COMPUTERDN="$computersRdn" PARCDN="$parcsRdn" SMBVERSION="$smbversion" if [ ! "$SMBVERSION" = "samba3" ]; then echo "Version de samba incorrecte." rm -f $LOCKFILE exit 1 fi DATE="`date +%F`" DOMAINSE3="$se3_domain" NETBIOSSE3="$netbios_name" # FAIT PAR se3-domain #echo -e "set SE3IP=$se3ip\r #set urlse3=$urlse3\r" > /home/netlogon/domscripts/se3ip.bat ##### valeurs finales ########## #export REPOS=/var/se3/unattended/install/os export REPSITE=/var/se3/unattended/install/site ##### valeurs pour tests ####### export REPOS=/root #REPSITE=/root UNATTENDTXT=unattend.txt ##### variables a stocker dans mysql ######## if [ -e /var/se3/unattended/install/os/xp.txt ] ; then PRODUCTKEY="`cat /var/se3/unattended/install/os/xp.txt | grep "^PRODUCTKEY=" | cut -d= -f2 | sed 's/\r//g' | sed 's/ //g' | sed 's/:/-/g'`" NOMOS="`cat /var/se3/unattended/install/os/xp.txt | grep "^OSNAME=" | cut -d= -f2 | sed 's/\r//g' `" else NOMOS="Windows XP Professionnel" PRODUCTKEY="*****-*****-*****-*****-*****" fi ##### A gerer dans l'interface: personnalisation de l'os par type de poste UNATTENDCSV=$REPSITE/unattend.csv export REPDRIVERS=/var/se3/unattended/install/drivers mkdir -p $REPSITE mkdir -p /var/se3/unattended/install/os rm -f $UNATTENDCSV cp /home/netlogon/domscripts/unattend.csv $UNATTENDCSV #mkdir -p $REPDRIVERS #chown -R adminse3 $REPDRIVERS ########## verification du compte unattend et de la conf dhcp correspondante ############ if [ "$UNATTENDCSVUPDATE" != "1" ]; then # on vérifie si la conf dhcp est correcte pour unattended et si l'utilisateur unattend est correctement parametre dans LDAP UNATTLOGIN="$dhcp_unatt_login" UNATTPASS="$dhcp_unatt_pass" echo "Mise en conformite du compte unattend dans l'annuaire et la configuration DHCP" if [ ! "$UNATTLOGIN" == "unattend" -o "$UNATTLOGIN" == "" ] ; then MODIFDHCP=1 echo "Mise a jour de dhcp_unatt_login en unattend dans la table DHCP" echo "UPDATE params SET value='unattend' WHERE name='dhcp_unatt_login'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi # si dhcp_unatt_pass absent de la table DHCP, on le cree aleatoirement if [ "$UNATTPASS" == "" ] ; then MODIFDHCP=1 UNATTPASS="$(makepasswd --chars=8)" echo "Le dhcp_unatt_pass est vide dans la table params (DHCP) : generation d'un mot de passe aleatoire." echo "UPDATE params SET value='$UNATTPASS' WHERE name='dhcp_unatt_pass'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi # Verification de la presence d'unattend dans l'annuaire UNATTENDLDAP=`ldapsearch -x -b ou=People,$BASEDN uid | grep "^uid: " | cut -d" " -f2 | grep "^unattend$"` #echo "Retour LDAP : $UNATTENDLDAP" if [ "$UNATTENDLDAP" == "" ]; then #echo "Le compte unattend est absent, on le cree" UIDPOLICY="$uidPolicy" echo "UPDATE params SET value='4' WHERE name='uidPolicy'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass /usr/share/se3/sbin/userAdd.pl Dom Unatten $UNATTPASS 19790921 M Administratifs echo "UPDATE params SET value=\"$UIDPOLICY\" WHERE name='uidPolicy'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass [ -e /var/se3/unattended/install/packages ] && ( setfacl -R -m u:unattend:rx /var/se3/unattended/install/packages setfacl -R -m d:u:unattend:rx /var/se3/unattended/install/packages setfacl -R -m u:www-se3:rx /var/se3/unattended/install/packages setfacl -R -m d:u:www-se3:rx /var/se3/unattended/install/packages ) else #echo "Unattend est present dans l'annuaire" # si le mot de passe est present dans l'interface dhcp, on l'impose a unattend # sinon, on impose un mot de passe aleatoire des deux cotes. #echo "On impose à unattend le mdp present dans la table params." /usr/share/se3/sbin/userChangePwd.pl unattend $UNATTPASS fi . /usr/share/se3/includes/config.inc.sh -svmf # on regenere la conf DHCP si il y a eu une modif [ "$MODIFDHCP" == "1" ] && [ -e /usr/share/se3/scripts/makedhcpdconf ] && /usr/share/se3/scripts/makedhcpdconf fi ##################### creation de unattend.csv ################################# touch /tmp/csvtodo /usr/share/se3/sbin/update-csv.sh # Envoi de l'e-mail rapport if [ -e /tmp/emailunattended_generate ] ; then cat /tmp/emailunattended_generate mail root -s"[Annuaire du SE3 a nettoyer] ERREUR" < /tmp/emailunattended_generate rm /tmp/emailunattended_generate fi [ -e $LOCKFILE ] && rm $LOCKFILE exit 0