All pastes #518459 Raw Edit

Unnamed

public shellscript v1 · immutable
#518459 ·published 2007-05-29 09:52 UTC
rendered paste body
#!/bin/sh####################################~ /* #~ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #~#~ Title : Script d'installation OpenK#~ Author : Mickael Allain#~#~ Description : Installation et configuration#~ automatique d'un serveur complet avec choix #~ des rôles.#~#~ Created : 10012007#~ Modified : 01032007#~#~ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ###################################VERSION='1.0'RELEASE='01/03/2007'########### FONCTIONS ############## Vérification du processus## statutProcess nom_processus# renvoie un int# 1 démarré# 2 arrêté# 255 processus inconnu###########################function statutProcess () {racine='/etc/init.d/'#Si le processus est présent dans /etc/init.d/if [ -f $racine$1 ]; thenstatut=`$racine$1 status | grep -E '(cours|server)'`	# Si son statut contient le texte "cours"        if (( ${#statut} > 0 )); then                #Processus démarré"                start=1        else                #Processus arrêté"                start=0        fielse#Processus inconnustart=255fireturn $start}# Détection si la chaîne est numérique# avec possibilité de sélectionner le nombre de décimales## is_numeric variable valeur_maximale# renvoie un entier# 1 c'est un numérique# 2 ce n'est pas un numérique############################################function is_numeric () {local ARG=$1numeric=`echo ${ARG} | grep -E "^[1-$2]{1}$"`if [ -z "$numeric" ];then        is_numeric=0else        is_numeric=1fireturn $is_numeric}############################################# Démarrage du processus## startProcess nom_processus# renvoie un entier# 0 processus redémarré# -1 processus absent ########################function startProcess () {local PROCESSUS=$1statutProcess $PROCESSUScase $start in0)        echo "Demarrage de $PROCESSUS"        $racine$PROCESSUS start        return 0	;;1)        echo "Arret puis redemarrage de $PROCESSUS"        $racine$PROCESSUS restart        return 0	;;255)        echo "Daemon absent"        return -1	;;esac}# Parse de l'adresse ip## parse_ip adresseip# renvoie IPREVERSE #######################################function parse_ip () {local IP=$1for (( i=1 ; i<=4 ; i++ )) doOCTET[$i]=$(echo "$IP" | cut -d "." -f "$i")doneIPREVERSE=${OCTET[3]}.${OCTET[2]}.${OCTET[1]}OCTET4IP=$(echo "$IP" | cut -d "." -f 4)}# Récupération de la date## dns_serial# Sous forme AAAAMMJJXX# XX représente 01#########################function dns_serial () {local date=`date "+%Y%m%d"`AAAAMMJJXX=$date\01}# Présence d'un fichier## presenceFichier# retourne PRESENCE# 1 : présent# 0 : absent###############presenceFichier() {local FICHIER=$1if [ -e $FICHIER ]	then		PRESENCE=1	else		PRESENCE=0fi}######## FIN DES FONCTIONS ###################### FONCTIONS D'INSTALLATION ################ CONFIGURATION ET INSTALLATION ADMINISTRATION######depot_local() {mv /etc/apt/sources.list /etc/apt/sources.list.0cp $INST/apt/sources.list /etc/apt/sed s/\#LOCAL//g $INST/apt/sources.list > /etc/apt/sources.listapt-get update## Installation des outils apt-get install -y vim iftop htop ssh mc netcat}installation_depot() {depot_internet() {## NTP INSTALL #### Installation NTPapt-get install -y ntp ntp-doc ntp-simple ntpdate# Ajout des serveurs NTPcp $INST/ntp/ntp.conf /etc/ntp.conf# Ajout au démarrage et redémarrage du service NTPupdate-rc.d -f ntp defaults 50/etc/init.d/ntpdate restart################################### Configuration du sources.list pour les dépôts Internet##sed s/\#NET//g $INST/apt/sources.list > /etc/apt/sources.list## Mise à jour de la listeapt-get update}case $1 in1)	depot_internet	;;2)	;;3)	echo "Quit"	exit 0	;;esac}################################################### Script d'installation de la connection Internet## argument 1 : choix effectué#################################################installation_connection() {case $1 in1)	;;2)	apt-get install -y arno-iptables-firewall	pppoeconf	;;3)	;;4)	echo "Quit"	exit 0	;;esac}################################################### Script d'installation du serveur DNS## argument 1 : choix effectué#################################################installation_dns () {REPERTOIRE_DNS_CONF='/etc/bind'REPERTOIRE_DNS_ZONE='/etc/bind/data'parse_ip $EXCHANGEdns_seriallocal ii=1case $1 in1)	# Installation du serveur DNS avec Redirecteurs	############################	echo "Installation du serveur DNS avec des redirecteurs"		# Installation DNS	#########################	apt-get install -y bind9 dnsutils	if [ ! -d /etc/bind/data ]	then		mkdir /etc/bind/data	fi		# Définition des variables	########################	FICHIER='/etc/bind/named.conf.options'		# Configuration host.conf	#########################	cp $INST/bind/host.conf /etc/host.conf		# Configuration du fichier /etc/bind/conf/named.conf.options	###################################	cp $INST/bind/named.conf.options $FICHIER	## On rentre le redirecteur numéro 1 et on fais 0 pour terminer	echo -e "\nRedirecteur numéro $i ? (ex : 10.0.43.1)"	echo -e "Appuyez sur la touche [0] pour finir la configuration des redirecteurs"	## Tant qu'on n'a pas appuyé sur la touche <0> on continue	while [ "$REDIRECTEUR" != 0 ]	do		## Si ce n'est pas le premier redirecteur, on [re]demande un autre redirecteur		if [ $i -ne 1 ]		then # Dans ce cas on affiche une seule phrase			echo -e "\nRedirecteur numéro $i ? (ex : 10.0.43.1)"			read REDIRECTEUR		else # Sinon on attend le redirecteur			read REDIRECTEUR		fi				# Si la réponse est vide, on redemande le redirecteur		while [ -z "$REDIRECTEUR" ]		do			echo -e "Désolé mais votre redirecteur est incorrect !"			echo -e "Redirecteur numéro $i ? (ex : 10.0.43.1)"			read REDIRECTEUR		done				# Si le redirecteur n'est pas égal à "0" dans ce cas on inscrit le redirecteur dans le fichier de configuration		# de named.local.options		if [ "$REDIRECTEUR" != 0 ]		then			echo -e "\t\t$REDIRECTEUR;" >> $FICHIER 		fi		# On incrémente de 1		i=`expr $i + 1`	done		# On finalise le fichier.		echo -e "\t};" >> $FICHIER		echo -e "\tauth-nxdomain no;" >> $FICHIER		echo -e "\tlisten-on-v6 { any; };" >> $FICHIER		echo -e "\t};" >> $FICHIER	# Configuration /etc/hosts	sed s/\$EXCHANGE/$EXCHANGE/g $INST/bind/hosts | sed s/\$DOMAIN/$DOMAIN/g |sed s/\$HOSTNAME/$HOSTNAME/g > /etc/hosts	# Configuration /etc/bind/named.conf	sed s/\$DOMAIN/$DOMAIN/g $INST/bind/named.conf | sed s/\$IPREVERSE/$IPREVERSE/g | sed s/\#forwarders/forwarders/g > $REPERTOIRE_DNS_CONF/named.conf	# Configuration /etc/bind/data/domaineDirect	sed s/\$HOSTNAME/$HOSTNAME/g $INST/bind/rechercheDirecte | sed s/\$DOMAIN/$DOMAIN/g | sed s/\$AAAAMMJJXX/$AAAAMMJJXX/g |  sed s/\$EXCHANGE/$EXCHANGE/g > $REPERTOIRE_DNS_ZONE/$DOMAIN	# Configuration /etc/bind/data/domaineIndirecte	sed s/\$DOMAIN/$DOMAIN/g $INST/bind/rechercheIndirecte | sed s/\$HOSTNAME/$HOSTNAME/g |  sed s/\$IPREVERSE/$IPREVERSE/g  | sed s/\$AAAAMMJJXX/$AAAAMMJJXX/g | sed s/\$OCTET4IP/$OCTET4IP/g > $REPERTOIRE_DNS_ZONE/$DOMAIN.reverse	# Configuration /etc/resolv.conf	sed s/\$DOMAIN/$DOMAIN/g $INST/bind/resolv.conf | sed s/\$EXCHANGE/$EXCHANGE/g > /etc/resolv.conf	# Attribution des droits de lecture pour bind	chown -R root:bind /etc/bind/data	# Lancement du processus DNS	update-rc.d -f bind9 defaults 50	/etc/init.d/networking restart	/etc/init.d/bind9 restart	;;2)	###Installation d'un serveur DNS sans redirecteurs	echo "Installation du serveur DNS Simple (sans redirecteurs)"		# Configuration host.conf	#########################	cp $INST/bind/host.conf /etc/host.conf	# Configuration /etc/hosts	sed s/\$EXCHANGE/$EXCHANGE/g $INST/bind/hosts | sed s/\$DOMAIN/$DOMAIN/g |sed s/\$HOSTNAME/$HOSTNAME/g > /etc/hosts	# Installation DNS	########################	apt-get install -y bind9 dnsutils	if [ ! -d /etc/bind/data ]	then		mkdir /etc/bind/data	fi		# Configuration /etc/bind/named.conf	sed s/\$DOMAIN/$DOMAIN/g $INST/bind/named.conf | sed s/\$IPREVERSE/$IPREVERSE/g > $REPERTOIRE_DNS_CONF/named.conf	# Configuration /etc/bind/data/domaineDirect	sed s/\$HOSTNAME/$HOSTNAME/g $INST/bind/rechercheDirecte | sed s/\$DOMAIN/$DOMAIN/g | sed s/\$AAAAMMJJXX/$AAAAMMJJXX/g |  sed s/\$EXCHANGE/$EXCHANGE/g > $REPERTOIRE_DNS_ZONE/$DOMAIN	# Configuration /etc/bind/data/domaineIndirecte	sed s/\$DOMAIN/$DOMAIN/g $INST/bind/rechercheIndirecte | sed s/\$HOSTNAME/$HOSTNAME/g |  sed s/\$IPREVERSE/$IPREVERSE/g  | sed s/\$AAAAMMJJXX/$AAAAMMJJXX/g | sed s/\$OCTET4IP/$OCTET4IP/g > $REPERTOIRE_DNS_ZONE/$DOMAIN.reverse	# Configuration /etc/resolv.conf	sed s/\$DOMAIN/$DOMAIN/g $INST/bind/resolv.conf | sed s/\$EXCHANGE/$EXCHANGE/g > /etc/resolv.conf	# Attribution des droits pour l'utilisateur root et le groupe bind	chown -R root:bind /etc/bind/data	# Lancement du processus	update-rc.d -f bind9 defaults 50	/etc/init.d/networking restart	/etc/init.d/bind9 restart	;;3)	# Configuration /etc/hosts	sed s/\$EXCHANGE/$EXCHANGE/g $INST/bind/hosts | sed s/\$DOMAIN/$DOMAIN/g | sed s/\$HOSTNAME/$HOSTNAME/g > /etc/hosts		##Demande du serveur DNS du réseau	## On rentre le redirecteur numéro 1 et on fais C pour terminer	echo -e "\nAdresse IP du DNS numéro $i ? (ex : 10.0.25.250)"	echo -e "Appuyez sur la touche [0] pour finir la configuration des serveurs de DNS"	# Copie de sauvegarde de l'ancien resolv.conf	cp /etc/resolv.conf /etc/resolv.conf.0	echo '' > /etc/resolv.conf		## Tant qu'on a pas appuyer sur la touche <0> on continue	while [ "$IP_DNS" != 0 ]	do		## Si ce n'est pas le premier serveur DNS, on redemande une autre adresse ip		if [ $i -ne 1 ]		then # Dans ce cas on affiche une seule phrase			echo -e "\nDNS numéro $i ? (ex : 10.0.25.250)"			read IP_DNS		else # Sinon on attends le redirecteur			read IP_DNS		fi				# Si la réponse est vide, on redemande le redirecteur		while [ -z "$IP_DNS" ]		do			echo -e "\nDésolé mais votre adresse IP est incorrecte !"			echo -e "DNS numéro $i ? (ex : 10.0.25.250)"			read IP_DNS		done				# Si le redirecteur n'est pas égal à "c" dans ce cas on inscrit le redirecteur dans le fichier de configuration		# de named.local.options		if [ "$IP_DNS" != 0 ]		then			echo -e "nameserver $IP_DNS" >> /etc/resolv.conf		fi		# On incrémente de 1		i=`expr $i + 1`	done		presenceFichier /etc/init.d/bind9	if [ $PRESENCE = 1 ]	then		update-rc.d -f bind9 remove		/etc/init.d/bind9 stop	fi		;;4)	echo "Quit"	exit 0	;;esac}################################################### Script d'installation du serveur POSTFIX / IMAP / POP3## argument 1 : choix effectué#################################################installation_mail () {REPERTOIRE_MAIL_CONF='/etc/postfix'# Procédure install_antiSpam## Installation de spamassassin# Aucun argument####################install_antiSpam() {# Installation de spamassassinapt-get install -y spamassassin spamc# Suppression puis Recréation du groupe et de l'utilisateur spamduserdel -r spamdgroupadd spamduseradd -m -g spamd -s /sbin/nologin spamd# Copie du fichier de configuration standardcp $INST/spamassassin/local.cf /etc/spamassassin/# Activation de Spamassassin (ENABLE=1)cp $INST/spamassassin/spamassassin /etc/default/spamassassin# Activation de Spamassassin au démarrage et redémarrage du processusupdate-rc.d spamassassin defaults 50/etc/init.d/spamassassin restart}########## FIN PROCEDURE INSTALLATION SPAMASSASSIN############### Procédure install_antiVirus## Installation de Amavisd-new# Aucun argument####################install_antiVirus() {# Installation de l'antivirusapt-get install -y amavisd-new clamav-daemon clamav-freshclam# Installation des différents standard de compréssion pour permettre une recherche# approfondie dans les archivesapt-get install -y arj bzip2 cabextract cpio file gzip lha lzop nomarch p7zip pax rar unrar unzip unzoo zip zoo# Ajout d'un utilisateur clamav dans le groupe amavisadduser clamav amavis# Configuration d'amavissed s/\$DOMAIN/$DOMAIN/g $INST/amavis/amavisd.conf > /etc/amavis/amavisd.conf# Activation de Spamassassin au démarrage et redémarrage du processusupdate-rc.d amavis defaults 50/etc/init.d/amavis restart/etc/init.d/postfix restart/etc/init.d/spamassassin restart}######### FIN PROCEDURE INSTALLATION AMAVISD-NEW ###############Procédure cas_ssl()## Activation/Désactivation SSL du processus# Suivant l'argument 1## Argument 1 : nom du programmecas_ssl() {local PROCESSUS=$1clearecho "Voulez vous exclusivement du cryptage SSL pour $PROCESSUS ? [o/n]"read CRYPT_SSLwhile [ "$CRYPT_SSL" != "o" ] && [ "$CRYPT_SSL" != "n" ]do	echo "Choix invalide !"	echo "Voulez vous exclusivement du cryptage SSL pour $PROCESSUS ? [o/n]"	read CRYPT_SSLdoneNOMPROCESSUS=`echo "$PROCESSUS" | tr A-Z a-z`if [ "$CRYPT_SSL" == "o" ]then			case $NOMPROCESSUS in		"postfix")		echo "Désactivation Postfix non SSL"		;;	"imap")		echo "Désactivation IMAP non SSL"				presenceFichier /etc/init.d/courier-imap-ssl				if [ $PRESENCE -eq 1 ]			then								# On supprime courier-imap de l'init du boot 				# On assure le démarrage de courier-imap-ssl au démarrage				update-rc.d -f courier-imap remove				update-rc.d courier-imap-ssl defaults 50								# Le processus courier-imap est stoppé et le SSL est redémarré				/etc/init.d/courier-imap stop				/etc/init.d/courier-imap-ssl restart			else				echo -e "[!!] IMAP n'est pas correctement installé\n"		fi		;;	"pop")		echo "Désactivation POP non SSL"				presenceFichier /etc/init.d/courier-pop-ssl				if [ $PRESENCE -eq 1 ]			then			# On supprime courier-pop de l'init du boot 			# On assure le démarrage de courier-pop-ssl au démarrage			update-rc.d -f courier-pop remove			update-rc.d courier-pop-ssl defaults 50						# Le processus courier-pop est stoppé et le SSL est redémarré			/etc/init.d/courier-pop stop			/etc/init.d/courier-pop-ssl restart			else				echo -e "[!!] POP n'est pas correctement installé\n"		fi		;;	esacelse		clear	echo "(L'accès en SSL de $PROCESSUS reste néanmoins possible)"	case $NOMPROCESSUS in		"postfix")		echo "Activation Postfix non SSL"		;;	"imap")		echo "Activation IMAP non SSL"				presenceFichier /etc/init.d/courier-imap-ssl				if [ $PRESENCE -eq 1 ]			then				update-rc.d courier-imap defaults 50				update-rc.d courier-imap-ssl defaults 50								/etc/init.d/courier-imap restart				/etc/init.d/courier-imap-ssl restart			else				echo -e "[!!] IMAP n'est pas correctement installé\n"		fi				;;	"pop")		echo "Activation POP non SSL"				presenceFichier /etc/init.d/courier-pop-ssl				if [ $PRESENCE -eq 1 ]			then				update-rc.d courier-pop defaults 50				update-rc.d courier-pop-ssl defaults 50								/etc/init.d/courier-pop restart				/etc/init.d/courier-pop-ssl restart			else				echo -e "[!!] POP n'est pas correctement installé\n"		fi								;;	esacfi}###FIN PROCEDURE CAS_SSL ############ Procédure selection_ssl()## argument 1 : choix du type de messagerie# 1) INSTALLATION POSTFIX/IMAP# 2) INSTALLATION POSTFIX/POP# 3) INSTALLATION POSTFIX/IMAP/POP##########################selection_ssl() {	case $1 in	1)		cas_ssl Postfix		install_antiSpam		install_antiVirus		cas_ssl IMAP				/etc/init.d/postfix stop		/etc/init.d/amavis stop		/etc/init.d/spamassassin stop		/etc/init.d/clamav-daemon stop		/etc/init.d/courier-imap stop		/etc/init.d/courier-imap-ssl stop				/etc/init.d/amavis start		/etc/init.d/spamassassin start		/etc/init.d/clamav-daemon start		/etc/init.d/courier-imap stop		/etc/init.d/courier-imap-ssl stop				/etc/init.d/postfix start		;;	2)		cas_ssl Postfix		install_antiSpam		install_antiVirus		cas_ssl Pop				/etc/init.d/postfix stop		/etc/init.d/amavis stop		/etc/init.d/spamassassin stop		/etc/init.d/clamav-daemon stop		/etc/init.d/courier-pop stop		/etc/init.d/courier-pop-ssl stop				/etc/init.d/amavis start		/etc/init.d/spamassassin start		/etc/init.d/clamav-daemon start		/etc/init.d/courier-pop start		/etc/init.d/courier-pop-ssl start				/etc/init.d/postfix start		;;	3)		cas_ssl Postfix		install_antiSpam		install_antiVirus		cas_ssl IMAP		cas_ssl Pop				/etc/init.d/postfix stop		/etc/init.d/amavis stop		/etc/init.d/spamassassin stop		/etc/init.d/clamav-daemon stop		/etc/init.d/courier-pop stop		/etc/init.d/courier-pop-ssl stop		/etc/init.d/courier-imap stop		/etc/init.d/courier-imap-ssl stop				/etc/init.d/amavis start		/etc/init.d/spamassassin start		/etc/init.d/clamav-daemon start		/etc/init.d/courier-pop start		/etc/init.d/courier-pop-ssl start		/etc/init.d/courier-imap start		/etc/init.d/courier-imap-ssl start				/etc/init.d/postfix start		;;	esac}###PROCEDURE FIN Selection SSL ################################## PROCEDURE INSTALLATION POSTFIXinstall_postfix () {	# Présence d'un relay ou non	echo "Voulez-vous faire du relay host sur un SMTP particulier ? [o/n]"	read RELAY	while [ "$RELAY" != "o" ] && [ "$RELAY" != "n" ]	do		echo "Choix invalide !"		echo "Voulez-vous faire du relay host sur le SMTP du FAI ? [o/n]"		read RELAY	done		# Installation de Postfix dans tous les cas	apt-get remove -y exim4-base exim4-daemon-light exim4-config	apt-get install -y postfix mailx		# Attribution des droits limités au fichier /etc/fetchmailrc, pour que personne ne puisse y accéder sauf root	#chmod 600 /etc/fetchmailrc			if [ "$RELAY" = "o" ]	then		echo -e "\nQuel est le relay SMTP ? (ex : smtp.unnom.com)"		read SMTP_FAI				# Configuration du /etc/postfix/main.cf		sed s/\$NETWORK/$NETWORK/g $INST/postfix/main.cf | sed "s/\#relayhost = smtp.mon.fai/relayhost = $SMTP_FAI/g" | sed s/\$MASK/$MASK/g | sed s/\$DOMAIN/$DOMAIN/g | sed s/\$HOSTNAME/$HOSTNAME/g > /etc/postfix/main.cf	else		# Configuration du /etc/postfix/main.cf		sed s/\$NETWORK/$NETWORK/g $INST/postfix/main.cf | sed s/\$MASK/$MASK/g | sed s/\$DOMAIN/$DOMAIN/g | sed s/\$HOSTNAME/$HOSTNAME/g > /etc/postfix/main.cf	fi		# Configuration du /etc/postfix/master.cf	cp $INST/postfix/master.cf /etc/postfix/		# Configuration des Aliases pour root	LOGIN=`echo "$POSTMASTER" | cut -d "@" -f 1`	sed s/\$LOGIN/$LOGIN/g $INST/postfix/aliases > /etc/aliases		# Réactualiser la base de donnée des alias	newaliases		# Configuration d'un squelette type pour chaque utilisateur	cp -R $INST/profil/skel /etc/	cp $INST/profil/skel/.* /etc/skel/	chmod -R 750 /etc/skel/Maildir	chmod -R 750 /etc/skel/.spamassassin	chmod -R 750 /etc/skel/.bash_profile	chmod -R 750 /etc/skel/.bashrc		# Détection si l'administrateur qui vas recevoir tous les avertissements à déja été créé.	presenceFichier /home/$LOGIN		if [ ! $PRESENCE -eq 1 ]	then		clear		echo "Veuillez saisir un mot de passe pour le responsable du serveur ($POSTMASTER)"		read MDP_LOGIN				apt-get install -y openssl		groupadd mail				useradd -m -g mail $LOGIN -s /bin/bash -p `openssl passwd -crypt "$MDP_LOGIN"`	else		cp -R /etc/skel/Maildir /home/$LOGIN/		cp -R /etc/skel/.spamassassin /home/$LOGIN/		chown $LOGIN:mail /home/$LOGIN/Maildir 		chown $LOGIN:mail /home/$LOGIN/.spamassassin	fi}case $1 in1)	###Installation du serveur Postfix et IMAP	echo "Installation du serveur Postfix et IMAP"	install_postfix	# Installation d'IMAP	#########################	apt-get install -y courier-imap-ssl	# Selection SSL ou non de Posfix et IMAP	#########################	selection_ssl $1	;;2)	###Installation du serveur Postfix et POP	echo "Installation du serveur Postfix et POP"	install_postfix	# Installation de POP	#########################	apt-get install -y courier-pop-ssl	# Sélection SSL ou non de Postfix et POP	########################	selection_ssl $1	;;3)	###Installation du serveur Postfix, IMAP et POP	echo "Installation du serveur Postfix, IMAP et POP"	install_postfix		# Installation IMAP et POP	#########################	apt-get install -y courier-imap-ssl	apt-get install -y courier-pop-ssl	# Sélection SSL ou non de Postfix et POP	########################	selection_ssl $1	;;4)	echo "Quit"	exit 0	;;esac}############################################################################################## Script d'installation du WEBMAIL## argument 1 : choix effectué#################################################installation_webmail() {installation_adminpage() {	# Copie des fichiers dans /var/www/admin	cp -R $INST/apache/admin/ /var/www/		# Parse du fichier index.html	sed s/\$DOMAIN/$DOMAIN/g $INST/apache/admin/index.html > /var/www/admin/index.html}case $1 in1)		installation_adminpage		# Installation d'Apache	apt-get install -y apache2 php4 php4-mysql php4-cli libapache2-mod-php4		# Installation de Squirrelmail	apt-get install -y squirrelmail-locales		# Configuration du fichier /usr/share/squirrelmail/config/config.php	sed s/\$DOMAIN/$DOMAIN/g $INST/squirrelmail/config.php > /usr/share/squirrelmail/config/config.php		# Configuration du fichier VHOST /etc/apache2/site-availables/default d'Apache 2.0.54	# Permet l'utilisation de l'adresse http://www.domain.com pour l'affichage de Squirrelmail	ROOT_DOCUMENT='\/usr\/share\/squirrelmail\/'		sed s/\$POSTMASTER/$POSTMASTER/g $INST/apache/default.vhost | sed "s/\$ROOT_DOCUMENT/$ROOT_DOCUMENT/g" > /etc/apache2/sites-available/default		# Configuration de /etc/mailname	sed s/\$DOMAIN/$DOMAIN/g $INST/squirrelmail/mailname > /etc/mailname		# La localisation française de Squirrelmail n'est active que si on effectue une reconfiguration des locales	dpkg-reconfigure locales	;;2)	# Installation de la page d'administration	installation_adminpage		# Définition du root document dans le /etc/apache2/sites-availables/default	ROOT_DOCUMENT='\/var\/www\/admin\/'	sed s/\$POSTMASTER/$POSTMASTER/g $INST/apache/default.vhost | sed "s/\$ROOT_DOCUMENT/$ROOT_DOCUMENT/g" | sed 's/\#Alias \/admin/Alias \/admin/g' > /etc/apache2/sites-available/default		# Redémarrage d'Apache2	/etc/init.d/apache2 restart	;;3)	echo "Quit"	exit 0	;;esac}############################################################################################# Script d'installation du monitoring## argument 1 : choix effectué#################################################installation_monitoring() {install_phpsysinfo() {		clear	echo -e "Installation de PHPSysInfo"		# Installation d'Apache	apt-get install -y apache2 php4 php4-mysql php4-cli libapache2-mod-php4		# Installation de PHPSysINFO	apt-get install -y phpsysinfo		if [ $TYPE_WEBMAIL -eq 1 ]	then		# Configuration du fichier VHOST d'Apache2		ROOT_DOCUMENT='\/usr\/share\/squirrelmail\/'	else		ROOT_DOCUMENT='\/var\/www\/admin\/'	fi		sed s/\$POSTMASTER/$POSTMASTER/g $INST/apache/default.vhost  | sed "s/\$ROOT_DOCUMENT/$ROOT_DOCUMENT/g" |  sed 's/\#Alias \/phpsysinfo/Alias \/phpsysinfo/g' | sed 's/\#Alias \/admin/Alias \/admin/g'  > /etc/apache2/sites-available/default		# Redémarrage d'Apache2	/etc/init.d/apache2 restart}install_cacti() {		clear	echo -e "Installation de CACTI"		apt-get install -y mysql-server cacti		# Configuration variable base de donnée	BASE=cacti		# On redemande le mot de passe inséré lors de l'installation de Cacti	echo -e "\nQuel est le mot de passe pour l'utilisateur CACTI ?"	echo -e "(Le même mot de passe que pendant l'installation de Cacti)"	read MDP_CACTI		# Création de l'utilisateur CACTI en local sur la machine	useradd -m cacti -s /bin/false -p `openssl passwd -crypt "$MDP_CACTI"`		# Redémarrage de mysql	/etc/init.d/mysql restart		# On demande le mot de passe pour le Root	echo -e "Quel est le mot de passe pour l'administrateur ROOT de la base MySQL ?"	read MDP_ROOT		# Modification du mot de passe Root de la base MySQL	`mysql -u root -e "update mysql.user set Password=PASSWORD('$MDP_ROOT') WHERE User='root'"`		# Création d'une base de donnée CACTI	`mysql -u root --password=$MDP_ROOT -e "create database $BASE"`		# Ajout de droits sur la base de donnée Cacti pour l'utilisateur Cacti	`mysql -u root --password=$MDP_ROOT -e "grant all privileges on $BASE.* to cacti@localhost identified by '"$MDP_CACTI"';" `		# Création des différentes tables pour la base de donnée Cacti	`zcat /usr/share/doc/cacti/cacti.sql.gz | mysql -u cacti --password=$MDP_CACTI $BASE`		case $TYPE_WEBMAIL in		1)		ROOT_DOCUMENT='\/usr\/share\/squirrelmail\/'		;;	2)		ROOT_DOCUMENT='\/var\/www\/admin\/'		#ROOT_DOCUMENT='\/var\/www\/roundcubemail\/'		;;	3)		ROOT_DOCUMENT='\/var\/www\/admin\/'		;;	esac		sed s/\$POSTMASTER/$POSTMASTER/g $INST/apache/default.vhost  | sed "s/\$ROOT_DOCUMENT/$ROOT_DOCUMENT/g" | sed 's/\#Alias \/phpsysinfo/Alias \/phpsysinfo/g'  | sed 's/\#Alias \/cacti/Alias \/cacti/g' | sed 's/\#Alias \/admin/Alias \/admin/g' > /etc/apache2/sites-available/default	# Redémarrage	/etc/init.d/apache2 restart	/etc/init.d/mysql restart		# Résumé de la configuration		echo "Résumé de la configuration"	echo -e  "---------------------------\n\n"	echo -e  "Identifiants pour l'administration de la base MySQL\n"	echo "Login : root" 	echo -e "Mot de passe : $MDP_ROOT\n"		echo "Login : cacti"	echo -e "Mot de passe : $MDP_CACTI\n\n\n"		echo -e "Identifiants pour l'administration de cacti\n\n"	echo "Login : admin"	echo "Mot de passe : admin"		echo -e "Connectez vous sur http://www.$DOMAIN/cacti/ pour configurer CACTI"	sleep 10}case $1 in1)	install_phpsysinfo	install_cacti	;;2)	;;3)	echo "Quit"	exit 0	;;esac}## Script d'installation de Squid## argument 1 : choix effectué#################################################installation_proxy() {case $1 in1)	# Installation de Squid	apt-get install -y squid arno-iptables-firewall		# Activation du routage sous Linux	echo 1 > /proc/sys/net/ipv4/ip_forward	cp $INST/squid/options /etc/network/options		# Ajout de règles iptables	iptables -A FORWARD -j ACCEPT	iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE		;;2)	;;3)	;;3)	echo "Quit"	exit 0	;;esac}################################################### Script d'installation des outils de controle à distance## argument 1 : choix effectué#################################################installation_distance() {install_webmin() {	# Installation de Webmin	#apt-get install -y webmin webmin-bind webmin-fetchmail webmin-firewall webmin-status	apt-get install -y webmin webmin-fetchmail webmin-firewall webmin-status webmin-bind	# Copie du fichier de configuration	cp $INST/webmin/miniserv.conf /etc/webmin/miniserv.conf}install_ssh() {	# Installation SSH	apt-get install -y ssh}install_phpmyadmin() {	# Installation PHPMyAdmin	apt-get install -y phpmyadmin	# Configuration du VHOST D'Apache2	if [ $TYPE_WEBMAIL -eq 1 ]	then		# Configuration du fichier VHOST d'Apache2		ROOT_DOCUMENT='\/usr\/share\/squirrelmail\/'	else		ROOT_DOCUMENT='\/var\/www\/admin\/'	fi		sed s/\$POSTMASTER/$POSTMASTER/g $INST/apache/default.vhost  | sed "s/\$ROOT_DOCUMENT/$ROOT_DOCUMENT/g" | sed 's/\#Alias \/phpsysinfo/Alias \/phpsysinfo/g'  | sed 's/\#Alias \/cacti/Alias \/cacti/g' | sed 's/\#Alias \/admin/Alias \/admin/g' > /etc/apache2/sites-available/default}case $1 in1)	install_webmin	install_ssh	install_phpmyadmin	;;2)	;;3)	echo "Quit"	exit 0	;;esac}#################################################################################################################### CONFIGURATION DU SERVEUR ########################################################################## MENU D'INSTALLATION ############################clearecho -e "\n\t\t\t Installation automatique d'OpenK $VERSION \n"echo -e "\n Que souhaitez-vous configurez ? \n"echo -e "\n Faites votre choix (Entrer le chiffre correspondant à votre choix) \n"echo -e "1. Configuration du serveur"echo -e "2. Connection Internet"echo -e "3. Serveur DNS"echo -e "4. Serveur de Messagerie"echo -e "5. Serveur Webmail"echo -e "6. Outils de Surveillance"echo -e "7. Serveur Proxy"echo -e "8. Prise en main à Distance"echo -e "9. Mise à jour du système et des logiciels"echo -e "10. Quitter"read CHOIX#test $CHOIX 3while  [ "$CHOIX" > 0 ]do while [ "$CHOIX" == 1 ]doclearecho -e "\n\n\t\t\t Installation automatique d'OpenK $VERSION \n"echo -e "\t\t\t (MAJ : $RELEASE)"echo -e "\nEntrer le nom du serveur (nom court, ex : mail):"read HOSTNAMEecho -e "\nEntrer le nom du domaine principal de messagerie (ex : openk.org):"read DOMAINecho -e "\nEntrer l'adresse de messagerie du responsable (ex : postmaster@openk.org):"read POSTMASTERecho -e "\nEntrer l'adresse IP du réseau (ex : 10.3.0.0):"read NETWORKecho -e "\nEntrer le masque de réseau (format décimal, ex : 16):"read MASKecho -e "\nEntrer l'adresse IP du serveur de Messagerie (ex : 10.3.29.4):"read EXCHANGEecho -e "\nRésumé de la configuration:\nFQDN:\t\t\t$HOSTNAME.$DOMAIN"echo -e "Postmaster:\t\t$POSTMASTER"echo -e "Network:\t\t$NETWORK/$MASK\nRelay to:\t\t$EXCHANGE"echo -e "\nÊtes-vous sur de vouloir continuer ? [o/n] "read CONTINUEif [ "$CONTINUE" != "o" ] && [ "$CONTINUE" != '' ]; thenexit 0fi### Variable d'environnementINST=`pwd`/packages########################## Copie du dépôt local sur le disque dur et configuration de celui-ciecho -e "Veuillez attendre quelques minutes pour la copie du dépôt sur le disque dur...."cp -R $INST/depot/ /root/depot/cp -R $INST/profil/skel/.spamassassin /root/cp -R $INST/profil/skel/Maildir /root/source /root/.bashrcdepot_local#############################################$CHOIX == 0donewhile [ "$CHOIX" == 2 ]doclear######## CHOIX TYPE DE CONNECTION ####################################echo -e "\n\nQuel est votre type de connection Internet ? [1|2|3|4]\n"echo -e "1 - Connection internet par routeur (Configuration effectuée lors de l'installation)"echo -e "2 - Connection par modem adsl (adsl-connect & PPPoE) "echo -e "3 - Pas de connection internet"echo -e "4 - Sortir"read TYPE_CONNECTIONis_numeric $TYPE_CONNECTION 4while [ "$is_numeric" == 0 ]do        echo "Choix invalide !"        echo -e "\nQuel est votre type de connection Internet ? [1/2/3/4] "        read TYPE_CONNECTION        is_numeric $TYPE_CONNECTION 4doneinstallation_connection $TYPE_CONNECTION################################################################sleep 2$CHOIX=0donewhile [ "$CHOIX" == 3 ]doclear########CHOIX SERVEUR DNS ##########################################echo -e "\n\nMise en place d'un serveur DNS ? [1|2|3|4]\n"echo -e "1 - Serveur DNS avec des redirecteurs"echo -e "2 - Serveur DNS Simple (sans redirecteurs)"echo -e "3 - Pas de serveur DNS"echo -e "4 - Sortir"read TYPE_DNSis_numeric $TYPE_DNS 4while [ "$is_numeric" == 0 ]do        echo "Choix invalide !"        echo -e "\nMise en place de DNS ? [1|2|3|4] "        read TYPE_DNS        is_numeric $TYPE_DNS 4doneinstallation_dns $TYPE_DNS###############################################################sleep 2$CHOIX=0donewhile [ "$CHOIX" == 4 ]doclear#########CHOIX DE MESSAGERIE #######################################echo -e "\nMise en place de la messagerie ? [1|2|3|4]"echo -e "(Antivirus et Anti-Spam installés par défaut)\n"echo "1 - Postfix / IMAP"echo "2 - Postfix / POP"echo "3 - Postfix / IMAP / POP"echo "4 - Sortir"read TYPE_MAILis_numeric $TYPE_MAIL 4while [ "$is_numeric" == 0 ]do        echo "Choix invalide !"        echo -e "Mise en place de la messagerie ? [1|2|3|4]"        read TYPE_DNS        is_numeric $TYPE_MAIL 4doneinstallation_mail $TYPE_MAIL###############################################################$CHOIX=0donesleep 2while [ "$CHOIX" == 5 ]doclear#################INSTALLATION D'UN WEBMAIL ##########################echo -e "\nMise en place d'un Webmail ? [1|2|3]\n"echo "1 - Squirrelmail"echo "2 - Aucun"echo "3 - Sortir"read TYPE_WEBMAILis_numeric $TYPE_WEBMAIL 3while [ "$is_numeric" == 0 ]do        echo "Choix invalide !"	echo "Mise en place d'un Webmail ?"        read TYPE_WEBMAIL        is_numeric $TYPE_WEBMAIL 3doneinstallation_webmail $TYPE_WEBMAIL##############################################################sleep 2donewhile [ "$CHOIX" == 6 ]doclear#################INSTALLATION PROGRAMMES DE MONITORING #################echo -e "\nMise en place des outils de surveillance [1|2|3]\n"echo "1 - PHPSysInfo - MRTG - CACTI"echo "2 - Aucun"echo "3 - Sortir"read TYPE_MONITORINGis_numeric $TYPE_MONITORING 3while [ "$is_numeric" == 0 ]do        echo "Choix invalide !"	echo "Mise en place des outils de surveillance"        read TYPE_MONITORING        is_numeric $TYPE_MONITORING 3doneinstallation_monitoring $TYPE_MONITORING###############################################################sleep 2donewhile [ "$CHOIX" == 7 ]doclear#################INSTALLATION D'UN PROXY ###########################echo -e "\nMise en place de Squid (Proxy)"echo "1 - Solution : Cache"echo "2 - Solution : Cache + Filtrage [ !! NON DISPONIBLE !! ]"echo "3 - Aucun"echo "4 - Sortir"read TYPE_PROXYis_numeric $TYPE_PROXY 4while [ "$is_numeric" == 0 ]do        echo "Choix invalide !"	echo "\nMise en place de Squid (Proxy)"        read TYPE_PROXY        is_numeric $TYPE_PROXY 4doneinstallation_proxy $TYPE_PROXY################################################################sleep 2donewhile [ "$CHOIX" == 8 ]doclear#################INSTALLATION PRISE EN MAIN A DISTANCE ##################echo -e "\nMise en place des outils de prise en main à distance [1|2|3]\n"echo "1 - Webmin - SSH - PHPMyAdmin"echo "2 - Aucun"echo "3 - Sortir"read TYPE_DISTANCEis_numeric $TYPE_DISTANCE 3while [ "$is_numeric" == 0 ]do        echo "Choix invalide !"	echo "Mise en place des outils de prise en main à distance [1|2|3]"        read TYPE_DISTANCE         is_numeric $TYPE_DISTANCE 3doneinstallation_distance $TYPE_DISTANCE###############################################################sleep 2doneclear#~ #################INSTALLATION OUTILS SAUVEGARDE #######################~ echo -e "\nMise en place d'une sauvegarde automatique [ !! EN COURS !! CHOISIR 1 ou 2 POUR CONTINUER ]\n"#~ echo "1 - RSync / Cron"#~ echo "2 - Aucune"#~ echo "3 - Sortir"#~ read TYPE_SAUVEGARDE#~ is_numeric $TYPE_SAUVEGARDE 3#~ while [ "$is_numeric" == 0 ]#~ do        #~ echo "Choix invalide !"	#~ echo "Mise en place d'une sauvegarde automatique"        #~ read TYPE_SAUVEGARDE        #~ is_numeric $TYPE_SAUVEGARDE 3#~ done#~ installation_sauvegarde $TYPE_SAUVEGARDE#~ ################################################################donesleep 2while [ "$CHOIX" == 9 ]doclear#################SOURCES.LIST######################echo -e "\nMise en place du dépôt Debian (/etc/apt/sources.list) :  distant ou local ?\n"echo "1 - Distant"echo "2 - Local"echo "3 - Sortir"read TYPE_SOURCEis_numeric $TYPE_SOURCE 3while [ "$is_numeric" == 0 ]do        echo "Choix invalide !"	echo "Local ou distant ?"        read TYPE_SAUVEGARDE        is_numeric $TYPE_SOURCE 3doneinstallation_depot $TYPE_SOURCE###############################################################done#while [ "$CHOIX" == 10 ]#do#exit 0echo -e "\n\n\tOpenK : Installation des composants terminée.\n\n"exit 0done