#! /bin/bash # postinst script for se3-dhcp # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `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) IS_IP() # Return EMPTY or IP adress if correct { test=`echo "$1" | sed -n -e "s/^\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)$/\1/p"` if [ "X$test" = "X" ] ; then echo "" else echo "$1" fi } ### on suppose que l'on est sous debian #### WWWPATH="/var/www" ## recuperation des variables necessaires pour interoger mysql ### . /usr/share/se3/includes/config.inc.sh -s -o -v -m > /dev/null ## Take some variables for initializing dhcp parameter (gateway / dns / wins ...) device=`/sbin/ifconfig | grep Ethernet |cut -d" " -f 1 | head -n 1` dns_primary=`cat /etc/resolv.conf | grep nameserver | cut -d" " -f 2 | head -n 1` dns_secondary=`cat /etc/resolv.conf | grep nameserver | cut -d" " -f 2 | head -n 2 | tail -n 1` gateway=`cat /etc/network/interfaces | grep gateway | grep -v -e ^\# | sed -n -e "s/^.*gateway[[:space:]]*\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\).*$/\1/p" ` dns_primary=`IS_IP "$dns_primary"` dns_sec=`IS_IP "$dns_sec"` gateway=`IS_IP "$gateway"` domain_name=`echo "SELECT value FROM params WHERE name='domain' " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` echo "ALTER TABLE params CHANGE descr descr VARCHAR( 100 )" | mysql $dbname -u $dbuser -p$dbpass ########################################################################################## ## Put mysql conf data in se3db base###################################################### ##### Activation du dhcp dans l'interface web test_exist=`echo "SELECT id FROM params WHERE name='dhcp'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp\",\"1\",\"\",\"Activation du dhcp dans l'interface web\",6) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi #SETMYSQL "dhcp" 1 "Activation du dhcp dans l'interface web" 6 ##### Activate dhcp on boot ? non jusqu'a la conf du dhcp test_exist=`echo "SELECT id FROM params WHERE name='dhcp_on_boot'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_on_boot\",\"1\",\"\",\"Activation du dhcp au boot\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N ##### DHCP3-SERVER does not start oin boot after install ... /usr/sbin/update-rc.d -f dhcp3-server remove else echo "UPDATE params SET cat=7 WHERE name='dhcp_on_boot'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### Interface who dhcp listen by default firs iface test_exist=`echo "SELECT id FROM params WHERE name='dhcp_iface'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_iface\",\"$device\",\"\",\"Interface d'écoute du dhcp \",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_iface'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### begin range reservations test_exist=`echo "SELECT id FROM params WHERE name='dhcp_ip_min'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_ip_min\",\"\",\"\",\"Début de la plage de reservation (par defaut network + 51) \",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7,descr=\"Début de la plage de reservation (par defaut network + 51)\" WHERE name='dhcp_ip_min'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### begin range dynamic test_exist=`echo "SELECT id FROM params WHERE name='dhcp_begin_range'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_begin_range\",\"\",\"\",\"Début de la plage dynamique\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_begin_range'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### end range dynamic test_exist=`echo "SELECT id FROM params WHERE name='dhcp_end_range'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_end_range\",\"\",\"\",\"Fin de la plage dynamique\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_end_range'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### DNS PRIMARY test_exist=`echo "SELECT id FROM params WHERE name='dhcp_dns_server_prim'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_dns_server_prim\",\"$dns_primary\",\"\",\"Serveur DNS primaire\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_dns_server_prim'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### DNS SECONDARY test_exist=`echo "SELECT id FROM params WHERE name='dhcp_dns_server_sec'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_dns_server_sec\",\"$dns_secondary\",\"\",\"Serveur DNS secondaire\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_dns_server_sec'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### GATEWAY test_exist=`echo "SELECT id FROM params WHERE name='dhcp_gateway'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_gateway\",\"$gateway\",\"\",\"Passerelle\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_gateway'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### WINS SERVER it's se3 ip by default test_exist=`echo "SELECT id FROM params WHERE name='dhcp_wins'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_wins\",\"$se3ip\",\"\",\"Serveur wins\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_wins'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### NTP server test_exist=`echo "SELECT id FROM params WHERE name='dhcp_ntp'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_ntp\",\"\",\"\",\"Serveur de temps\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_ntp'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### MAX lease test_exist=`echo "SELECT id FROM params WHERE name='dhcp_max_lease'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_max_lease\",\"72000\",\"\",\"Bail maximum\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_max_lease'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### Default lease test_exist=`echo "SELECT id FROM params WHERE name='dhcp_default_lease'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_default_lease\",\"6000\",\"\",\"Bail par défaut\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_default_lease'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### Domain name test_exist=`echo "SELECT id FROM params WHERE name='dhcp_domain_name'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_domain_name\",\"$domain_name\",\"\",\"Nom du domaine\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_domain_name'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### serveur tftp ##### next-server IPTFTP; test_exist=`echo "SELECT id FROM params WHERE name='dhcp_tftp_server'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_tftp_server\",\"$se3ip\",\"\",\"Serveur TFTP\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_tftp_server'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### UNATTENDED PARAMS* test_exist=`echo "SELECT id FROM params WHERE name='dhcp_unatt_login'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_unatt_login\",\"\",\"\",\"Nom d'utilisateur pour unattended\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_unatt_login'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi test_exist=`echo "SELECT id FROM params WHERE name='dhcp_unatt_pass'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_unatt_pass\",\"\",\"\",\"Mot de passe pour unattended\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_unatt_pass'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi test_exist=`echo "SELECT id FROM params WHERE name='dhcp_unatt_filename'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_unatt_filename\",\"pxelinux.0\",\"\",\"Fichier de boot PXE utilisé pour udpcast ou unattented\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7 WHERE name='dhcp_unatt_filename'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi # extra option test_exist=`echo "SELECT id FROM params WHERE name='dhcp_extra_option'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` if [ "X$test_exist" = "X" ]; then # if empty echo "INSERT into params (name,value,srv_id,descr,cat) VALUES (\"dhcp_extra_option\",\"\",\"\",\"Fichier de conf a inclure (chemin absolu)\",7) " | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N else echo "UPDATE params SET cat=7,descr=\"Fichier de conf a inclure (chemin absolu)\" WHERE name='dhcp_extra_option'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N fi ##### nom du fichier PXE # filename "pxelinux.0"; # parametres de cx samba ##### option option-233 "z_user=USERINSTALL z_pass=PASSINSTALL z_path=//IPUNATT/unattended"; ##### sudo script for make dhcpd conf chmod +x /usr/share/se3/scripts/makedhcpdconf ##### Now create table if not exist for recorded dhcp computers mysql -h $dbhost $dbname -u $dbuser -p$dbpass < /var/cache/se3_install/se3-dhcp/se3-dhcp.sql >/dev/null 2>&1 ##### SVG dhcp.conf if exist if [ -f /etc/dhcp/dhcpd.conf ]; then mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.svg.SE3 /usr/share/se3/scripts/makedhcpdconf fi # actualisation du cache des parametres : /usr/share/se3/includes/config.inc.sh -clpbmsdf ##### END POSTINST se3-dhcp installed ##### ADD good line in /etc/sudoers.conf if necessary and restart sudo # if [ ! "`cat /etc/sudoers | grep SE3DHCP`" ]; then # sed -i 's/^\(www-se3.*\)$/\1,NOPASSWD:SE3DHCP/' /etc/sudoers # sed -i 's|^\(# Cmnd alias specification.*\)$|\1\nCmnd_Alias SE3DHCP=/usr/share/se3/scripts/makedhcpdconf,/usr/share/se3/scripts/move_dhcp_leases.sh|' /etc/sudoers # /etc/init.d/sudo restart # else # # La ligne Cmnd_Alias SE3DHCP existe déjà (avec au moins une commande # if [ ! "$(grep "/usr/share/se3/scripts/move_dhcp_leases.sh" /etc/sudoers)" ]; then # # On ajoute la commande au premier rang # sed -i 's|Cmnd_Alias SE3DHCP=|Cmnd_Alias SE3DHCP=/usr/share/se3/scripts/move_dhcp_leases.sh,|' /etc/sudoers # TEMOIN_CHGT_SUDO="y" # fi # # 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. #DEBHELPER# exit 0