#!/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 ]dowhile [ "$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