#!/bin/bash # postinst script for se3-clonage # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in install|configure) . /usr/share/se3/includes/config.inc.sh -lmd mysqlrequest="mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N" test_exist=`echo "SELECT value FROM params WHERE name='clonage'" | $mysqlrequest` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT INTO params VALUES ('', 'clonage', '0', 0, 'Activation du serveur de boot pxe - udpcast / unattented', 6)" |$mysqlrequest fi echo "CREATE TABLE IF NOT EXISTS se3_tftp_action ( id INT(11), mac VARCHAR(255), name VARCHAR(255), date INT(11), type VARCHAR(255), num_op INT(11), infos VARCHAR(255) );" |$mysqlrequest echo "CREATE TABLE IF NOT EXISTS se3_tftp_sauvegardes ( id INT( 11 ) NOT NULL , name VARCHAR( 255 ) NOT NULL , mac VARCHAR( 255 ) NOT NULL , partition VARCHAR( 255 ) NOT NULL , image VARCHAR( 255 ) NOT NULL , date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , descriptif TEXT NOT NULL, df TEXT NOT NULL, partitionnement TEXT NOT NULL, identifiant int(11) NOT NULL auto_increment, PRIMARY KEY (identifiant) );" |$mysqlrequest echo "CREATE TABLE IF NOT EXISTS se3_tftp_rapports ( id INT( 11 ) NOT NULL , name VARCHAR( 255 ) NOT NULL , mac VARCHAR( 255 ) NOT NULL , date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , tache VARCHAR( 255 ) NOT NULL , statut VARCHAR( 255 ) NOT NULL , descriptif TEXT NOT NULL, identifiant int(11) NOT NULL auto_increment, PRIMARY KEY (identifiant) );" |$mysqlrequest echo "CREATE TABLE IF NOT EXISTS se3_tftp_infos ( id INT( 11 ) NOT NULL , name VARCHAR( 255 ) NOT NULL , mac VARCHAR( 255 ) NOT NULL , nom VARCHAR( 255 ) NOT NULL , valeur VARCHAR( 255 ) NOT NULL , identifiant int(11) NOT NULL auto_increment, PRIMARY KEY (identifiant) );" |$mysqlrequest # Test du nombre de caracteres du champ name de se3db.params # debut_nom_champ="a$(date +%Y%m%d%H%M%S)" # nom_champ_tmp="${debut_nom_champ}0123456789012345" # # # Enregistrement d'une valeur temporaire # echo "INSERT INTO params SET name='$nom_champ_tmp';" | $mysqlrequest # # test_champ=`echo "SELECT 1=1 FROM params WHERE name='$nom_champ_tmp';" | $mysqlrequest` # if [ -z "$test_champ" ]; then # echo "ALTER TABLE params CHANGE name name VARCHAR( 30 );" | $mysqlrequest # fi # # # Menage: # echo "DELETE FROM params WHERE name LIKE '$debut_nom_champ%';"| $mysqlrequest #============================================================================== # on rend executable les script sudo et sbin for i in se3_tftp_boot_pxe.sh pxe_gen_cfg.sh recup_rapport.php se3_tftp_menage_atq.sh se3_pxe_menu_ou_pas.sh set_password_menu_tftp.sh se3_pxe_slitaz_cmdline.sh se3_get_sysresccd.sh se3_get_slitaz.sh se3_get_udpcast.sh do if [ -e /usr/share/se3/scripts/$i ]; then chmod +x /usr/share/se3/scripts/$i chown www-se3 /usr/share/se3/scripts/$i fi done if [ -e /usr/share/se3/sbin/controle_actions_tftp.sh ]; then chmod +x /usr/share/se3/sbin/controle_actions_tftp.sh fi #============================================================================== # Ajout d'un droit pour que des personnes auxquelles un parc est delegue 'manage' puissent sauvegarder, restaurer, cloner,... sur ce parc t=$(ldapsearch -xLLL -b ${rightsRdn},${ldap_base_dn} cn=parc_can_clone) if [ -z "$t" ]; then echo "dn: cn=parc_can_clone,${rightsRdn},${ldap_base_dn} objectClass: groupOfNames cn: parc_can_clone member: uid=admin,${peopleRdn},${ldap_base_dn} " | ldapadd -x -D ${adminRdn},${ldap_base_dn} -w ${adminPw} fi #============================================================================== ##### ADD good line in /etc/sudoers.conf if necessary and restart sudo TEMOIN_CHGT_SUDO="n" # TEST=$(grep "NOPASSWD:SE3CLONAGE" /etc/sudoers) # if [ ! "$(grep "NOPASSWD:SE3CLONAGE" /etc/sudoers)" ]; then # # Insertion de l'autorisation de lancement par www-se3 # sed -i 's/^\(www-se3.*\)$/\1,NOPASSWD:SE3CLONAGE/' /etc/sudoers # TEMOIN_CHGT_SUDO="y" # fi TEST=$(cat /etc/sudoers | grep "Cmnd_Alias SE3CLONAGE") if [ ! "$(grep "Cmnd_Alias SE3CLONAGE" /etc/sudoers)" ]; then # On insere toute la ligne des commandes sed -i 's|^\(# Cmnd alias specification.*\)$|\1\nCmnd_Alias SE3CLONAGE=/usr/share/se3/scripts/se3_tftp_boot_pxe.sh,/usr/share/se3/scripts/pxe_gen_cfg.sh,/usr/share/se3/scripts/recup_rapport.php,/usr/share/se3/scripts/se3_tftp_menage_atq.sh,/usr/share/se3/scripts/se3_pxe_menu_ou_pas.sh,/usr/share/se3/scripts/set_password_menu_tftp.sh,/usr/share/se3/scripts/se3_pxe_slitaz_cmdline.sh,/usr/share/se3/scripts/se3_get_sysresccd.sh,/usr/share/se3/scripts/se3_get_slitaz.sh,/usr/share/se3/scripts/se3_get_udpcast.sh|' /etc/sudoers TEMOIN_CHGT_SUDO="y" else # La ligne Cmnd_Alias SE3CLONAGE existe deja (avec au moins une commande donc) for i in se3_tftp_boot_pxe.sh pxe_gen_cfg.sh recup_rapport.php se3_tftp_menage_atq.sh se3_pxe_menu_ou_pas.sh set_password_menu_tftp.sh se3_pxe_slitaz_cmdline.sh se3_get_sysresccd.sh se3_get_slitaz.sh se3_get_udpcast.sh se3_get_install_client_linux.sh do if [ ! "$(grep "/usr/share/se3/scripts/$i" /etc/sudoers)" ]; then # On ajoute la commande au premier rang sed -i "s|Cmnd_Alias SE3CLONAGE=|Cmnd_Alias SE3CLONAGE=/usr/share/se3/scripts/$i,|" /etc/sudoers TEMOIN_CHGT_SUDO="y" fi done fi if [ "$TEMOIN_CHGT_SUDO" = "y" ]; then /etc/init.d/sudo restart fi #============================================================================== # Pour toujours utiliser la derniere version des outils pxelinux if [ -e /tftpboot/pxelinux.0 ]; then rm -f /tftpboot/pxelinux.0 fi #for A in chain.c32 cpuidtest.c32 dmitest.c32 ethersel.c32 mboot.c32 menu.c32 pcitest.c32 vesamenu.c32 pxelinux.0 #do # if [ ! -e "/tftpboot/$A" ]; then # ln -s /usr/lib/syslinux/$A /tftpboot # fi #done ls /usr/lib/syslinux/ | egrep -v "(\.com$|\.exe$|\.gz$)" | while read A do if [ ! -e /tftpboot/$A ]; then ln -s /usr/lib/syslinux/$A /tftpboot/$A fi done #============================================================================== # Configuration des scripts dans /tftpboot d'apres les enregistrements en cours # tftp_aff_menu_pxe=$(echo "SELECT value FROM params WHERE name='tftp_aff_menu_pxe';" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N) # tftp_pass_menu_pxe=$(echo "SELECT value FROM params WHERE name='tftp_pass_menu_pxe';" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N) # tftp_slitaz_cmdline=$(echo "SELECT value FROM params WHERE name='tftp_slitaz_cmdline';" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N) if [ "${tftp_aff_menu_pxe}" != "y" ]; then /usr/share/se3/scripts/se3_pxe_menu_ou_pas.sh 'standard' else /usr/share/se3/scripts/se3_pxe_menu_ou_pas.sh 'menu' fi if [ "${tftp_pass_menu_pxe}" != "" ]; then /usr/share/se3/scripts/set_password_menu_tftp.sh "${tftp_pass_menu_pxe}" fi if [ "${tftp_slitaz_cmdline}" != "" ]; then /usr/share/se3/scripts/se3_pxe_slitaz_cmdline.sh "${tftp_slitaz_cmdline}" fi #============================================================================== mkdir -p /etc/se3/www-tools/tftp chmod 770 /etc/se3/www-tools/tftp chown www-se3:root /etc/se3/www-tools/tftp if [ -e "/tftpboot/pxelinux.cfg" ]; then chown www-se3:root /tftpboot/pxelinux.cfg fi /usr/sbin/update-rc.d -f atftpd remove mkdir -p /srv if [ ! -h /srv/tftp ]; then rm -rf /srv/tftp ln -s /tftpboot /srv/tftp fi # Activation par inetd.conf [ "$test_exist" != "0" ] && /usr/share/se3/scripts/se3_tftp_boot_pxe.sh start # Pour renseigner le fichier param.ini du paquet post-clonage if [ -e /var/se3/Progs/install/paquet_post-clonage/temp/clone/param.ini -a -z "$(grep 'Ne pas modifier' /var/se3/Progs/install/paquet_post-clonage/temp/clone/param.ini)" ]; then # dhcp_iface=$(echo "SELECT value FROM params WHERE name='dhcp_iface';" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N) # netmask=$(/sbin/ifconfig $dhcp_iface |/bin/grep 'inet ' |/usr/bin/cut -d":" -f4 |/usr/bin/cut -d' ' -f1) # dhcp_gateway=$(echo "SELECT value FROM params WHERE name='dhcp_gateway';" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N) # dhcp_dns_server_prim=$(echo "SELECT value FROM params WHERE name='dhcp_dns_server_prim';" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N) # dhcp_wins=$(echo "SELECT value FROM params WHERE name='dhcp_wins';" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N) # se3_domain=$(echo "SELECT value FROM params WHERE name='se3_domain';" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N) # se3ip=$(echo "SELECT value FROM params WHERE name='se3ip';" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N) # if [ -n "$dhcp_iface" -a -n "$se3mask" -a -n "$dhcp_gateway" -a -n "$dhcp_dns_server_prim" -a -n "$dhcp_wins" -a -n "$se3_domain" -a -n "$se3ip" ]; then cp /var/se3/Progs/install/paquet_post-clonage/temp/clone/param.ini /var/se3/Progs/install/paquet_post-clonage/temp/clone/param.ini.$(date +%Y%m%d%%H%M%S) prefip=$(echo "$se3ip" | cut -d'.' -f1) octet=$(echo "$se3mask" | cut -d'.' -f2) if [ "$octet" = "255" ]; then prefip="$prefip."$(echo "$se3ip" | cut -d'.' -f2) octet=$(echo "$se3mask" | cut -d'.' -f3) if [ "$octet" = "255" ]; then prefip="$prefip."$(echo "$se3ip" | cut -d'.' -f3) fi fi prefip="$prefip." echo "GW=$dhcp_gateway MASK=$se3mask DNS=$dhcp_dns_server_prim WINS=$dhcp_wins PREFIP=$prefip SMB_DOMAIN=$se3_domain " > /var/se3/Progs/install/paquet_post-clonage/temp/clone/param.ini.tmp cat /var/se3/Progs/install/paquet_post-clonage/temp/clone/param.ini.tmp | perl -pe 's/\n/\r\n/' > /var/se3/Progs/install/paquet_post-clonage/temp/clone/param.ini rm -f /var/se3/Progs/install/paquet_post-clonage/temp/clone/param.ini.tmp fi fi # Pour tenir compte des prochaines versions SysRescCD: if [ ! -e /tftpboot/rescue32 -a -e /tftpboot/rescuecd ]; then cd /tftpboot && mv rescuecd rescue32 && ln -s rescue32 rescuecd # On pourrait plutot forcer un telechargement de la nouvelle version SysRescCD: # L'absence de rescuecd et rescue32 inviterait au telechargement. #cd /tftpboot && rm rescuecd fi ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. exit 0