896 lines
30 KiB
Bash
Executable File
896 lines
30 KiB
Bash
Executable File
#!/bin/sh
|
||
################################################################################################
|
||
##
|
||
## Nom: new_post_install.sh
|
||
##
|
||
## Version: 0.3.0
|
||
##
|
||
## Licence: Creative Commons
|
||
##
|
||
## Comportement: Script de post-installation pour une distribution Debian GNU/Linux Sid
|
||
## Les variables en miniscules sont les variables issues de mon template de script shell
|
||
## Pour les variables spécifiques à un script, je les met en MAJUSCULES
|
||
##
|
||
##
|
||
################################################################################################
|
||
##
|
||
## Date de création: 15-02-2012
|
||
##
|
||
## Auteur: Gardouille
|
||
##
|
||
## Dépendances: Je me base sur un ensemble de fichiers seed situés dans un répertoires seed/ pour pré-configurer quelques logiciels:
|
||
## backuppc.seed
|
||
## cups.seed
|
||
## ddclient.seed
|
||
## hddtemp.seed
|
||
## keyboard.seed
|
||
## locales.seed
|
||
## rcs.seed
|
||
## restart_no_asking.seed
|
||
## samba.seed
|
||
## sun-java6-jre.seed
|
||
## x11-common.seed
|
||
##
|
||
## Dernière modifications:
|
||
## 2014-12-08 -
|
||
## - Ajout de mat
|
||
## 2012-09-06
|
||
## - Ajout du paquet dnsutils
|
||
## 2012-05-01 - 0.5.01
|
||
## - Remplacement de firmware-brcm80211 au profit de broadcom-sta-dkms
|
||
## 2012-04-23 - 0.4.23
|
||
## - Remplacement de comix par son fork mcomix (comix a été abandonné)
|
||
## 2012-04-11 - 0.4.11
|
||
## - Ajout du paquet mumble
|
||
## 2012-04-04 - 0.4.4:
|
||
## - Ajout du paquet alsa-utils
|
||
# **********************************************************************************************
|
||
## À Modifier:
|
||
## - Supprimer apt-listbugs (commenter /etc/apt/apt.conf.d/10apt-listbugs)?
|
||
## - Ajouter un warning si pas de dossier seed dans le répertoire d'install ?
|
||
################################################################################################
|
||
|
||
## Vérification que le script est bien lancé en root
|
||
if [ "${USER}" = "root" ]; then
|
||
echo "Lancement du script"
|
||
else
|
||
echo "/!\\ Le script nécessite d'être root /!\\"
|
||
exit 1
|
||
fi
|
||
|
||
# **********************************************************************************************
|
||
#
|
||
# Variables globales
|
||
#
|
||
# -----------------------------------------------------------
|
||
|
||
script_path=$(dirname $0)
|
||
|
||
## Choix du mode d'exécution du script: (cf fonction def_debug)
|
||
## Niveau 0
|
||
# Exécution automatique avec normalement aucune interaction avec l'utilisateur et peu de log
|
||
## Niveau 1 et 2
|
||
# Exécution automatique avec un peu plus d'information dans les logs
|
||
## Niveau 3
|
||
# Exécution manuelle avec tous les logs
|
||
## Niveau 4
|
||
# Reprise du niveau 3 sur la sortie standard
|
||
## Niveau 5
|
||
# Exécution automatique avecla sortie standard
|
||
## Niveau 6
|
||
# Mode debug
|
||
mode_debug=5
|
||
|
||
## Architecture de la distribution
|
||
ARCH=""
|
||
|
||
## Options d'aptitude en fonction du niveau de debug
|
||
OPTIONS=""
|
||
|
||
# Default grub timeout
|
||
grub_timeout='5'
|
||
|
||
# Default user informations
|
||
new_username=$(ls -1 /home | grep -v "lost+found" | tail -n 1)
|
||
new_user_mail="${new_username}"
|
||
|
||
# Strate 1 server from Paris Astronomical Observatory (obspm)
|
||
# http://syrte.obspm.fr/informatique/ntp_infos.php
|
||
ntp_server='ntp-p1.obspm.fr'
|
||
|
||
# Load personnal informations (new_username, new_user_mail, …) and override some variables
|
||
if [ -f ${script_path}/informations ]; then
|
||
. ${script_path}/informations
|
||
else
|
||
printf '%b' "You should define a ${script_path}/informations file\n"
|
||
printf '%b' "Or simply copy the template:\n"
|
||
printf '%b' "cp ${script_path}/informations.template ${script_path}/informations\n"
|
||
printf '%b' "Otherwise the script will use defaults values such as '${new_username}' as main user.\n"
|
||
time=10
|
||
printf '%b' "The script will continue in ${time} seconds "
|
||
while [ "${time}" -gt 0 ]; do
|
||
printf '%b' "."
|
||
time=$((time-1))
|
||
sleep 1
|
||
done
|
||
clear
|
||
fi
|
||
|
||
# Fin des variables globales
|
||
# -----------------------------------------------------------
|
||
# **********************************************************************************************
|
||
|
||
# **********************************************************************************************
|
||
#
|
||
# Fichiers globaux
|
||
#
|
||
# -----------------------------------------------------------
|
||
#
|
||
## Répertoire de log
|
||
log_dir="/home/${new_username}/log/`date +"%d"-"%m"-"%y"`"
|
||
|
||
# !! Pour utiliser un répertoire de log, décommenter la ligne suivante:
|
||
#mkdir -p $log_dir
|
||
|
||
if [ -d ${log_dir} ]; then
|
||
## Fichier de log placé dans le répertoire de log
|
||
fichier_log="${log_dir}/new_post_install.sh.log"
|
||
## Fichier de erreur placé dans le répertoire de log
|
||
fichier_erreur="${log_dir}/new_post_install.sh.err"
|
||
else
|
||
## Fichier de log "normal"
|
||
fichier_log="new_post_install.sh.log"
|
||
## Fichier de erreur "normal"
|
||
fichier_erreur="new_post_install.sh.err"
|
||
fi
|
||
|
||
## Fichier qui reprend toutes les informations pour l'utilisateur à la suite de l'installation.
|
||
INFORMATION="information.txt"
|
||
|
||
# Fin des fichiers globaux
|
||
# -----------------------------------------------------------
|
||
# **********************************************************************************************
|
||
|
||
# **********************************************************************************************
|
||
#
|
||
# Fonctions globales
|
||
#
|
||
# -----------------------------------------------------------
|
||
## Fonction d'affichage en fonction du mode debug choisi
|
||
echod() { [ "${mode_debug}" -ge 5 ] && echo "\n(DEBUG) $*" ; }
|
||
echok() { [ "${mode_debug}" -ge 3 ] && echo "(ok) $*" ; }
|
||
echoi() { [ "${mode_debug}" -ge 2 ] && echo "(ii) $*" ; }
|
||
echow() { [ "${mode_debug}" -ge 1 ] && echo "(!!) $*" ; }
|
||
echnk() { [ "${mode_debug}" -ge 0 ] && echo "(EE) $*" ; }
|
||
|
||
## Redirection de la sortie standard (stdout) vers le fichier de log
|
||
redirect_stdout()
|
||
{
|
||
# On test si le descripteur de fichier 6 existe déjà
|
||
if [ ! "$(lsof -a -p $$ -d6 | grep 6)" ]; then # Si stdout n'est pas déjà redirigé
|
||
# Sauvegarder la valeur de stdout dans le descripteur de fichier 6
|
||
exec 6>&1
|
||
|
||
# stdout remplacé par le fichier de log
|
||
exec > ${fichier_log}
|
||
echok "stdout redirigé"
|
||
else
|
||
echow "stdout déjà redirigé ..."
|
||
fi
|
||
}
|
||
|
||
## Restauration de stdout
|
||
restore_stdout()
|
||
{
|
||
# Test si le descripteur de fichier 6 existe
|
||
if [ "$(lsof -a -p $$ -d6 | grep 6)" ]; then
|
||
echok "Restauration de stdout et fermeture du descripteur de fichier 6"
|
||
# Restaurer stdout et fermer le descripteur de fichier #6
|
||
exec 1>&6 6>&-
|
||
else
|
||
echoi "Le descripteur de fichier 6 n'existe pas. stdout est normalement en place"
|
||
fi
|
||
}
|
||
|
||
## Redirection de la sortie d'erreur standard (stderr) vers le fichier d'erreur
|
||
redirect_stderr()
|
||
{
|
||
# On test si le descripteur de fichier 7 existe déjà
|
||
if [ ! "$(lsof -a -p $$ -d7 | grep 7)" ]; then
|
||
# Sauvegarder la valeur de stderr dans le descripteur de fichier 7
|
||
exec 7>&2
|
||
|
||
# stderr remplacé par le fichier d'erreur
|
||
exec 2> ${fichier_erreur}
|
||
echok "stderr redirigé"
|
||
else
|
||
echow "stderr déjà redirigé"
|
||
fi
|
||
}
|
||
|
||
## Restauration de stderr
|
||
restore_stderr()
|
||
{
|
||
# Test si le descripteur de fichier 7 existe
|
||
if [ "$(lsof -a -p $$ -d7 | grep 7)" ]; then
|
||
echok "Restauration de stderr et fermeture du descripteur de fichier 7"
|
||
# Restaurer stderr et fermer le descripteur de fichier #7
|
||
exec 2>&7 7>&-
|
||
else
|
||
echoi "Le descripteur de fichier 7 n'existe pas. stderr est normalement en place"
|
||
fi
|
||
}
|
||
|
||
## Fonction de vérification du code retour de la commande précédemment exécutée
|
||
# Affiche un message relatif au code retour, et peut sortir du script.
|
||
# - Prototype : check_output "MESSAGE_RELATIF_À_LA_COMMANDE"
|
||
check_output()
|
||
{
|
||
## Vérification du code retour de la dernière commande
|
||
case "${?}" in
|
||
0 ) ## Si 0, tout s'est bien passé
|
||
echok "${1}\n"
|
||
> "${fichier_erreur}" ## On vide le fichier d'erreur qui aurait pu récupérer des warnings ou autre
|
||
# Appel de la fonction d'attente (appui sur une touche)
|
||
attente
|
||
;; ## Pas d'erreur
|
||
* ) ## Si différent de 0
|
||
## On affiche le message relatif à l'erreur
|
||
echnk "Erreur lors de: -> ${1} <-"
|
||
echoi "Voir le fichier ${fichier_erreur} pour plus d'information."
|
||
## Et on arrête le script avec un code retour 1
|
||
echnk "/!\\ Arrêt du script /!\\ "
|
||
exit 1;
|
||
;;
|
||
esac
|
||
}
|
||
|
||
## Fonction qui crée les fichiers passés en paramètres
|
||
## Si les fichiers existent déjà, ils sont supprimés puis recrées
|
||
## Prototype: create_file $1 [$2 $3 ... $x]
|
||
## $1: nom du premier fichier à créer
|
||
create_file()
|
||
{
|
||
# Parcourir tous les arguments et les crée si nécessaire
|
||
for fichier in $*; do
|
||
if [ -f ${fichier} ]; then
|
||
rm -f ${fichier}
|
||
touch ${fichier}
|
||
check_output "Suppression puis création du fichier ${fichier}"
|
||
else
|
||
touch ${fichier}
|
||
check_output "Création du fichier ${fichier}"
|
||
fi
|
||
done
|
||
}
|
||
|
||
## Fonction qui permet de redéfinir les fichiers de log
|
||
# Prototype: change_log_file $1
|
||
# $1: nouveau nom du fichier de log
|
||
change_log_file()
|
||
{
|
||
# Restauration des sorties standard
|
||
restore_stdout
|
||
restore_stdin
|
||
|
||
# Redéfinition des fichiers de logs pour mieux correspondre à l'action en cours
|
||
if [ -d ${log_dir} ]; then
|
||
## Fichier de log placé dans le répertoire de log
|
||
fichier_log="${log_dir}/${1}.log"
|
||
## Fichier de erreur placé dans le répertoire de log
|
||
fichier_erreur="${log_dir}/${1}.err"
|
||
else
|
||
## Fichier de log "normal"
|
||
fichier_log="${1}.log"
|
||
## Fichier de erreur "normal"
|
||
fichier_erreur="${1}.err"
|
||
fi
|
||
|
||
# Création des fichiers de logs
|
||
create_file ${fichier_log} ${fichier_erreur}
|
||
|
||
# Rediriger les sorties standard
|
||
redirect_stdout
|
||
redirect_stderr
|
||
}
|
||
|
||
## Fonction d'attente
|
||
# Attend l'appui sur une touche si le mode debug le permet
|
||
# Prototype: attente
|
||
attente()
|
||
{
|
||
if [ "${mode_debug}" -ge 6 ]; then
|
||
echod "Appuyer sur la touche 'Entrée' pour continuer ..."
|
||
#read -s -n1 /dev/null 2> /dev/null
|
||
dd bs=1 count=1 > /dev/null 2>&1
|
||
# Le problème avec la commande `read` est que les différents shell (sh, bash, zsh, ...) en ont une implémentation
|
||
# différente. L'utilisation de `dd` est en revanche fonctionnelle partout.
|
||
fi
|
||
}
|
||
|
||
## Définition du niveau de debug
|
||
## Prototype: def_debug $1
|
||
## $1: valeur comprise entre 0 et 2 pour déterminer le niveau de debug
|
||
## Niveau 0
|
||
# Exécution automatique avec normalement aucune interaction avec l'utilisateur et peu de log
|
||
## Niveau 1 et 2
|
||
# Exécution automatique avec un peu plus d'information dans les logs
|
||
## Niveau 3
|
||
# Exécution automatique avec tous les logs
|
||
## Niveau 4
|
||
# Reprise du niveau 3 sur la sortie standard
|
||
## Niveau 5
|
||
# Mode debug
|
||
def_debug()
|
||
{
|
||
case "${1}" in
|
||
0) ## Niveau minimum avec le minimum de contenu dans les fichiers de logs
|
||
# La sortie standard sera redirigée dans un fichier de log
|
||
redirect_stdout
|
||
# La sortie d'erreur sera redirigée dans un fichier d'erreur
|
||
redirect_stderr
|
||
# Aptitude en tout automatique
|
||
OPTIONS="-y"
|
||
# Ne pas afficher les changements sur les paquets lors des mises à jour
|
||
sed -i 's/pager$/none/' /etc/apt/listchanges.conf
|
||
;;
|
||
1) ## Niveau bas avec seulement les erreurs et les warnings dans les logs
|
||
redirect_stdout
|
||
redirect_stderr
|
||
# Aptitude en tout automatique
|
||
OPTIONS="-y"
|
||
# Ne pas afficher les changements sur les paquets lors des mises à jour
|
||
sed -i 's/pager$/none/' /etc/apt/listchanges.conf
|
||
;;
|
||
2) ## Niveau intermédiaire avec les erreurs, les warnings et les informations
|
||
redirect_stdout
|
||
redirect_stderr
|
||
# Pas d'options pour aptitude
|
||
OPTIONS="-y"
|
||
# Ne pas afficher les changements sur les paquets lors des mises à jour
|
||
sed -i 's/pager$/none/' /etc/apt/listchanges.conf
|
||
;;
|
||
3) ## Niveau moyen avec presque tous les echos (sauf DEBUG)
|
||
redirect_stdout
|
||
redirect_stderr
|
||
# Pas d'options pour aptitude
|
||
OPTIONS=""
|
||
;;
|
||
4) ## Niveau élevé avec presque tous les echos (sauf DEBUG) sur la sortie standard
|
||
redirect_stderr
|
||
# Pas d'options pour aptitude
|
||
OPTIONS=""
|
||
;;
|
||
5)
|
||
OPTIONS="-y"
|
||
# Ne pas afficher les changements sur les paquets lors des mises à jour
|
||
sed -i 's/pager$/none/' /etc/apt/listchanges.conf
|
||
;;
|
||
6) ## Niveau debug avec tous les echos et les sorties non redirigées
|
||
# Pas d'options pour aptitude
|
||
OPTIONS=""
|
||
echo "Mode debug"
|
||
attente
|
||
;;
|
||
*) ## Niveau non pris en compte
|
||
echo "Erreur, le niveau choisi (${1}) n'est pas géré"
|
||
esac
|
||
}
|
||
|
||
## Fonction d'installation
|
||
# Récupère la liste des paquets à installer et le type de ces paquets.
|
||
# Prototype: aptins "DESCRIPTION_PAQUET" paquet1 paquet2 ... paquetX
|
||
# Les options sont définies en fonctions du niveau de debug
|
||
# Utilisation de la fonction check_output pour vérifier que tout s'est bien passé
|
||
aptins()
|
||
{
|
||
## On récupère la description
|
||
DESCR_PAQUET="${1}"
|
||
## Décale la liste des paramètres, $2 devient $1, ... Permet de supprimer la description des paquet.
|
||
shift
|
||
## Installation de la liste des paquets passées en paramètre
|
||
aptitude ${OPTIONS} install $*
|
||
## Vérification que tout s'est bien passé
|
||
check_output "${DESCR_PAQUET}"
|
||
## Nettoie les paquets téléchargés
|
||
aptitude clean
|
||
}
|
||
|
||
## Fonction de désinstallation
|
||
# Récupère la liste des paquets à désinstaller et le type de ces paquets.
|
||
# Prototype: arem "DESCRIPTION_PAQUET" paquet1 paquet2 ... paquetX
|
||
# Les options sont définies en fonctions du niveau de debug
|
||
# Utilisation de la fonction check_output pour vérifier que tout s'est bien passé
|
||
arem()
|
||
{
|
||
## On récupère la description
|
||
DESCR_PAQUET="${1}"
|
||
## Décale la liste des paramètres, $2 devient $1, ... Permet de supprimer la description des paquet.
|
||
shift
|
||
## Installation de la liste des paquets passées en paramètre
|
||
aptitude ${OPTIONS} remove $*
|
||
## Vérification que tout s'est bien passé
|
||
check_output "${DESCR_PAQUET}"
|
||
## Nettoie les fichiers de configuration des paquets
|
||
aptitude ${OPTIONS} purge '~c'
|
||
}
|
||
|
||
## Fonction qui récupère l'architecture de la distribution
|
||
architecture()
|
||
{
|
||
ARCHI=$(uname -r)
|
||
|
||
if [ `uname -r | grep amd64` ]; then
|
||
ARCH="64"
|
||
elif [ `uname -r | grep 86` ]; then
|
||
ARCH="86"
|
||
else
|
||
echow "architecture inconnue: ${ARCHI}"
|
||
fi
|
||
}
|
||
|
||
## Fonction qui vérifie la présence d'un fichier seed pour l'argument passé en paramètre.
|
||
# Si ce fichier existe, il sera donc appliqué.
|
||
# Prototype: preconfig "NOM_PAQUET"
|
||
preconfig()
|
||
{
|
||
if [ -f ${script_path}/seed/${1}.seed ]; then
|
||
debconf-set-selections ${script_path}/seed/${1}.seed
|
||
check_output "Préconfiguration de ${1}"
|
||
else
|
||
echow "Il n'existe aucun fichier seed pour ${1}."
|
||
fi
|
||
}
|
||
|
||
# Fin des fonctions globales
|
||
# -----------------------------------------------------------
|
||
# **********************************************************************************************
|
||
|
||
# **********************************************************************************************
|
||
#
|
||
# Programme principale
|
||
#
|
||
# -----------------------------------------------------------
|
||
|
||
# Création des fichiers de logs
|
||
create_file ${fichier_log} ${fichier_erreur} ${INFORMATION}
|
||
|
||
# Définition du niveau de debug
|
||
def_debug ${mode_debug}
|
||
|
||
# Définition de l'architecture
|
||
architecture
|
||
|
||
###########################################################
|
||
## Configuration de Aptitude
|
||
###########################################################
|
||
###### Pré-configuration
|
||
|
||
## Chargement de la configuration pour ne pas avoir de messages lorsqu'un service a besoin
|
||
## de redémarrer après une mise à jour
|
||
preconfig restart_no_asking
|
||
|
||
## apt.conf.d
|
||
cp -f ${script_path}/apt/apt.conf.d/* /etc/apt/apt.conf.d/
|
||
|
||
## Sources.list
|
||
### Backup initial
|
||
test -f /etc/apt/sources.list && mv /etc/apt/sources.list /etc/apt/sources.list.bkp
|
||
rm -f /etc/apt/sources.list\~
|
||
|
||
### Copy all local sources.list files
|
||
cp -f ${script_path}/apt/sources-list.d/* /etc/apt/sources.list.d/
|
||
|
||
## Preferences
|
||
### Backup initial
|
||
test -f /etc/apt/preferences && mv /etc/apt/preferences /etc/apt/preferences.bkp
|
||
|
||
### Copy all local preferences files
|
||
cp -f ${script_path}/apt/preferences.d/* /etc/apt/preferences.d/
|
||
|
||
aptitude update
|
||
check_output "Update Debian repositories"
|
||
|
||
## Installation de la clé pour le dépôt multimédia
|
||
# Restauration des sorties standard pour pouvoir confirmer l'installation de la clé
|
||
restore_stdout
|
||
restore_stderr
|
||
aptitude install deb-multimedia-keyring
|
||
|
||
# Restauration des sorties en fonction du niveau de debug choisi
|
||
def_debug ${mode_debug}
|
||
|
||
aptitude update
|
||
check_output "Mise à jour des dépôts"
|
||
|
||
restore_stdout
|
||
restore_stderr
|
||
# Variable pour forcer à garder les anciens fichiers de configuration si de nouveaux sont présent avec une maj
|
||
export UCF_FORCE_CONFFOLD=1
|
||
|
||
aptitude -y full-upgrade
|
||
check_output "Mise à jour du système"
|
||
def_debug ${mode_debug}
|
||
|
||
###########################################################
|
||
## Prérequis
|
||
## Liste: debconf-utils - lsof
|
||
###########################################################
|
||
###### Pré-configuration
|
||
preconfig locales
|
||
preconfig keyboard
|
||
|
||
###### Installation
|
||
aptins "Prérequis" debconf-utils lsof
|
||
|
||
# Pour la description de debconf-utils, voir la partie "Outils d'administration"
|
||
|
||
###########################################################
|
||
## X11 Server
|
||
###### Pre-configuration
|
||
preconfig x11-common
|
||
|
||
###### Installation
|
||
aptins "X11 Server" mesa-utils xorg
|
||
###########################################################
|
||
|
||
###########################################################
|
||
## Graphic Environment
|
||
###### Installation
|
||
aptins "Graphic Environment" alsa-utils gtk2-engines-cleanice herbstluftwm i3lock lxappearance nitrogen redshift rofi roxterm scrot suckless-tools terminator wmctrl xbacklight xclip
|
||
|
||
##### Remove
|
||
arem "Purge: Graphic Environment" xscreensaver xscreensaver-data
|
||
###########################################################
|
||
|
||
###########################################################
|
||
## Gnome tools
|
||
###### Installation
|
||
aptins "Gnome tools" evince etherape gedit gnome-calculator gparted nemo nemo-fileroller planner
|
||
|
||
##### Remove
|
||
arem "Purge: Gnome tools" eog
|
||
###########################################################
|
||
|
||
###########################################################
|
||
## Dev tools
|
||
###### Installation
|
||
aptins "Dev tools" build-essential binutils cpp debconf-utils gcc g++ make
|
||
###########################################################
|
||
|
||
###########################################################
|
||
#### Admin tools for cli
|
||
##### Pre-configuration
|
||
preconfig hddtemp
|
||
|
||
##### Installation
|
||
aptins "Admin tools for cli" acpitool alien apticron apt-file apt-listbugs apt-rdepends apt-show-source apt-show-versions dctrl-tools debian-goodies dnsutils ethtool git git-svn gpm hddtemp htop ifscheme iperf mlocate mercurial module-assistant ncdu netdiscover netselect-apt nmap ntp parted pastebinit rsyslog sudo sysv-rc-conf tcpdump tree
|
||
|
||
##### Post-configuration
|
||
###### apt-file: Synchronize the package contents from their sources.
|
||
apt-file update
|
||
|
||
###### Grub: Modify the default grub timeout
|
||
if [ ! "$(grep "GRUB_TIMEOUT=${grub_timeout}" /etc/default/grub)" ]; then
|
||
sed -i "s/^GRUB_TIMEOUT.*/GRUB_TIMEOUT=${grub_timeout}/" /etc/default/grub
|
||
update-grub
|
||
fi
|
||
|
||
###### Mlocate: Update the mlocate database
|
||
updatedb
|
||
|
||
###### Modprobe: Ensure to disable system beep/buzzer
|
||
cp ${script_path}/modprobe.d/blacklist-beep.conf /etc/modprobe.d/
|
||
# Ensure to blacklist dangerous modules (firewire, thunderbolt, …)
|
||
cp ${script_path}/modprobe.d/blacklist-dma.conf /etc/modprobe.d/
|
||
|
||
###### Ntp: Set a better NTP server.
|
||
if [ ! "$(grep "server ${ntp_server}" /etc/ntp.conf)" ]; then
|
||
sed -i "s/^server.*/server ${ntp_server}/g" /etc/ntp.conf
|
||
# Restart NTP service to apply the new server
|
||
systemctl restart ntp
|
||
fi
|
||
|
||
###### Rsyslog: Enable Rsyslog in tty9
|
||
sed -i '/#daemon,mail.\*;/{:label;/^$/q;s/^#//;n;s/^#//;t label;}' /etc/rsyslog.conf
|
||
sed -i 's/tty8/tty9/' /etc/rsyslog.conf
|
||
|
||
###### Sudo: Add default user to sudo group
|
||
if [ ! "$(grep "^sudo:x:27:.*${new_username}" /etc/group)" ]; then
|
||
adduser ${new_username} sudo
|
||
fi
|
||
###########################################################
|
||
|
||
###########################################################
|
||
## System tools for cli
|
||
##### Pre-configuration
|
||
# Chargement d'un fichier preseed
|
||
preconfig backuppc
|
||
|
||
##### Installation
|
||
aptins "System tools for cli" backuppc bsdmainutils colordiff cpio genisoimage keychain knockd lzip moreutils multitail myrepos ntfs-3g openssh-client openssh-server openvpn pmount screen tmux unrar unzip urlview vim-nox vim-doc vim-scripts vlock wakeonlan zsh zip
|
||
|
||
##### Remove
|
||
arem "Purge: System tools for cli" bluetooth bluez vim-tiny
|
||
|
||
##### Post-configuration
|
||
###### Vim: set vim-nox as default editor.
|
||
update-alternatives --set editor $(command -v vim.nox)
|
||
|
||
##### Openvpn: Disable to automatically start
|
||
systemctl disable openvpn.service
|
||
|
||
###### ZSH: set as default shell
|
||
## For root
|
||
chsh -s /bin/zsh
|
||
rm -f ~/.bash*
|
||
## For new_username
|
||
chsh -s /bin/zsh "${new_username}"
|
||
mkdir -p /home/"${new_username}"/.zsh
|
||
chown "${new_username}":"${new_username}" /home/"${new_username}"/.zsh
|
||
## For new users with adduser
|
||
sed -i "s;/bin/bash;/bin/zsh;" /etc/adduser.conf
|
||
###########################################################
|
||
|
||
###########################################################
|
||
#### Internet tools for cli
|
||
##### Installation
|
||
aptins "Internet tools for cli" axel finch postfix weechat-curses
|
||
|
||
##### Post-configuration
|
||
###### Postfix
|
||
# Ensure to forward root's mails to $new_user_mail
|
||
if [ ! "$(grep "root: .*${new_user_mail}" /etc/aliases)" ]; then
|
||
sed -i "s/^root: /root: ${new_user_mail} /" /etc/aliases
|
||
newaliases
|
||
fi
|
||
###########################################################
|
||
|
||
###########################################################
|
||
## Internet tools for X11
|
||
###### Installation
|
||
aptins "Internet tools for X11" browser-plugin-freshplayer-pepperflash dwb filezilla icedove icedove-l10n-fr iceowl-extension iceweasel iceweasel-l10n-fr luakit midori pepperflashplugin-nonfree pidgin pidgin-otr pidgin-microblog rdesktop transmission xvnc4viewer
|
||
|
||
###### Remove
|
||
arem "Purge: Internet tools for X11" flashplugin-nonfree flashplugin-nonfree-extrasound
|
||
|
||
###### Post-configuration
|
||
# Ensure to install last flash version
|
||
update-pepperflashplugin-nonfree --install
|
||
###########################################################
|
||
|
||
###########################################################
|
||
## Outils systèmes (graphique)
|
||
## Liste: gprename
|
||
###########################################################
|
||
###### Installation
|
||
aptins "Outils système (graphique)" gprename
|
||
|
||
###### Information pour l'utilisateur final
|
||
cat >> "${INFORMATION}" << EOF
|
||
|
||
======Outils systèmes (graphique)======
|
||
Voici la liste des paquets installés :
|
||
+gprename : permet de renommer des fichiers en masse à partir d'une interface graphique
|
||
EOF
|
||
|
||
###########################################################
|
||
## Carte graphiqua
|
||
## Suport: nvidia -
|
||
## Liste: nvidia-glx nvidia-kernel-dkms nvidia-settings nvidia-xconfig
|
||
###########################################################
|
||
###### Installation
|
||
if [ "$(lspci | grep -i nvidia)" ]; then
|
||
###### Pré-configuration
|
||
module-assistant prepare
|
||
module-assistant clean nvidia-kernel
|
||
module-assistant auto-install -i nvidia-kernel-source
|
||
|
||
###### Installation
|
||
aptins "Pilotes NVidia" nvidia-glx nvidia-kernel-dkms nvidia-settings nvidia-xconfig
|
||
|
||
## Post-configuration
|
||
nvidia-xconfig --no-logo
|
||
|
||
###### Information pour l'utilisateur final
|
||
cat >> "${INFORMATION}" << EOF
|
||
|
||
======Pilotes NVidia======
|
||
Voici la liste des paquets installés :
|
||
|
||
+nvidia-glx : Fournis le nvidia-kernel-295.33
|
||
|
||
+nvidia-kernel-dkms :Fournis les sources du module noyau nvidia DKMS
|
||
|
||
+nvidia-settings : Outils pour configurer le driver NVIDIA
|
||
|
||
+nvidia-xconfig : Outils de configuration de X pour NVIDIA
|
||
EOF
|
||
|
||
fi
|
||
|
||
###########################################################
|
||
## Carte réseau
|
||
## Support : carte wifi BCM43
|
||
## Liste: broadcom-sta-dkms
|
||
###########################################################
|
||
if [ "$(lspci | grep -i BCM43)" ]; then
|
||
###### Installation
|
||
aptins "Outils gestion wifi" linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,') broadcom-sta-dkms
|
||
|
||
###### Post-configuration
|
||
# Décharger les modules qui peuvent créer des conflits
|
||
modprobe -r b44 b43 b43legacy ssb brcmsmac
|
||
# Charger le bon module
|
||
modprobe wl
|
||
# Vérification du bon fonctionnement avec:
|
||
#iwconfig
|
||
|
||
###### Information pour l'utilisateur final
|
||
cat >> "${INFORMATION}" << EOF
|
||
|
||
======Pilote wiki BCM43======
|
||
|
||
Voici la liste des paquets installés :
|
||
|
||
+broadcom-sta-dkms : Source DKMS pour les drivers wifi des cartes Broadcom.
|
||
-Plus d'informations:
|
||
-- http://wiki.debian.org/wl#Wheezy
|
||
EOF
|
||
|
||
fi
|
||
|
||
###########################################################
|
||
## Office tools for cli
|
||
## List: cups - devtodo - graphviz - imagemagick - imagemagick-doc - odt2txt - pdftk - texlive - texlive-latex-extra - vim-latexsuite
|
||
## Remove: avahi-autopid - avahi-daemon - cups-browsed - libnss-mdns
|
||
###########################################################
|
||
###### Pre-configuration
|
||
# Load preseed file
|
||
preconfig cups
|
||
|
||
###### Installation
|
||
aptins "Office tools for cli" cups devtodo graphviz imagemagick imagemagick-doc odt2txt pdftk texlive texlive-latex-extra vim-latexsuite
|
||
|
||
###### Remove
|
||
arem "Purge: Office tools for cli" avahi-autopid avahi-daemon cups-browsed libnss-mdns
|
||
|
||
###### Post-configuration
|
||
# Add the standard user to lpadmin group to be able to manage Cups administration via webgui.
|
||
adduser "${new_username}" lpadmin > /dev/null 2> "${fichier_erreur}"
|
||
# cups needs samba!
|
||
|
||
###########################################################
|
||
## Office tools for X11
|
||
###### Installation
|
||
aptins "Outils bureautique graphique" freeplane key-mon libreoffice libreoffice-l10n-fr libreoffice-help-fr libreoffice-pdfimport fonts-linuxlibertine ttf-ancient-fonts verbiste verbiste-gnome
|
||
###########################################################
|
||
|
||
###########################################################
|
||
## Outils multimédia (shell)
|
||
## Liste: avinfo - eyed3 - ffmpeg - lynx - mirage - moc - w32codecs
|
||
###########################################################
|
||
###### Installation
|
||
aptins "Outils multimédia (shell)" avinfo eyed3 ffmpeg lynx mirage moc w32codecs
|
||
|
||
###### Information pour l'utilisateur final
|
||
cat >> "${INFORMATION}" << EOF
|
||
|
||
======Outils multimédia (shell)======
|
||
Voici la liste des paquets installés :
|
||
|
||
+avinfo : Fournit des informations sur des fichiers vidéo au format AVI, OGG, OGM, MPEG, ou MKV.
|
||
|
||
+eyed3 : Fournit des informations/tags sur les fichiers mp3
|
||
|
||
+ffmpeg : Contient divers outils pour la manipulation de fichiers audio
|
||
|
||
+lynx : Navigateur web léger en mode texte
|
||
|
||
+mirage : Une visionneuse d'image légère en gtk+ pour remplacer eog
|
||
|
||
+moc : Pour Music On Console - Logiciel qui permet d'écouter de la musique à partir d'une console
|
||
|
||
+w32codecs : Contient certains codecs vidéo non natif par mplayer
|
||
|
||
EOF
|
||
|
||
###########################################################
|
||
## Outils multimédia (graphique)
|
||
## Liste: audacity - mcomix - easytag - gimp - inkscape - mkvtoolnix-gui - mumble - smplayer - rhythmbox - vlc
|
||
## Désactivé: mcomix
|
||
###########################################################
|
||
###### Installation
|
||
aptins "Outils multimédia (graphique)" audacity easytag gimp inkscape mkvtoolnix-gui mumble smplayer rhythmbox vlc
|
||
|
||
###### Information pour l'utilisateur final
|
||
cat >> "${INFORMATION}" << EOF
|
||
|
||
======Outils multimédia (graphique)======
|
||
Voici la liste des paquets installés :
|
||
|
||
+audacity : Logiciel d'édition audio. Utiliser avi2wav pour récupérer la piste audio d'une vidéo.
|
||
|
||
+mcomix : Lecteur de scan (comic, manga, ...)
|
||
|
||
+easytag : permet de modifier les tags des fichiers audio
|
||
|
||
+gimp : Éditeur d'image
|
||
|
||
+inkscape : Logiciel de dessin vectoriel
|
||
--Il est également possible de modifier un fichier .pdf
|
||
|
||
+mkvtoolnix-gui : permet d'éditer les fichiers mkv
|
||
|
||
+mumble : Client VoIP à faible latence
|
||
|
||
+smplayer : Lecteur vidéo
|
||
|
||
+rhythmbox : Lecteur de musique
|
||
|
||
+vlc : Lecteur vidéo
|
||
|
||
EOF
|
||
|
||
###########################################################
|
||
## Games
|
||
###### Installation
|
||
aptins "Games" teeworlds teeworlds-server
|
||
###########################################################
|
||
|
||
###########################################################
|
||
## Network share
|
||
###### Installation
|
||
aptins "Network share" nfs-common
|
||
|
||
###### Remove
|
||
arem "Purge: Network share" nfs-kernel-server samba
|
||
|
||
###### Post-configuration
|
||
#### If nfs-kernel-server and samba are need or vital for the system, disable them anyway
|
||
# Disable samba service if available by default
|
||
if [ $(command -v samba) ]; then
|
||
systemctl disable nmbd.service
|
||
systemctl disable smbd.service
|
||
systemctl disable samba.service
|
||
fi
|
||
# Disable nfs-kernel-server service if available by default
|
||
if [ $(command -v nfsdcltrack) ]; then
|
||
systemctl disable nfs-kernel-server.service
|
||
fi
|
||
###########################################################
|
||
|
||
###########################################################
|
||
#### Wireless tools for cli
|
||
if [ "$(lspci | grep -i wireless)" ]; then
|
||
##### Installation
|
||
aptins "Wireless tools for cli" ifscheme wireless-tools wpasupplicant
|
||
fi
|
||
###########################################################
|
||
|
||
###########################################################
|
||
#### Miscellaneous useless packages
|
||
##### Installation
|
||
aptins "Miscellaneous useless packages" asr-manpages cmatrix cowsay cowsay-off fortunes fortunes-bofh-excuses fortunes-debian-hints fortunes-fr fortunes-off funny-manpages linuxlogo sl
|
||
###########################################################
|
||
|
||
###########################################################
|
||
## Manpages / Documentation
|
||
###### Installation
|
||
aptins "Manpages" aptitude-doc-fr info manpages-fr manpages-fr-dev manpages-fr-extra
|
||
###########################################################
|
||
|
||
# Restauration des sorties standard
|
||
restore_stdout
|
||
restore_stderr
|
||
|
||
# Supprime le fichier d'erreur si il est vide
|
||
[ -s ${fichier_erreur} ] && echo "Fichier erreur non vide" || rm ${fichier_erreur}
|
||
# Supprime le fichier d'log si il est vide
|
||
[ -s ${fichier_log} ] && echo "Fichier log non vide" || rm ${fichier_log}
|
||
|
||
exit 0
|
||
# Fin de la boucle principale
|
||
# -----------------------------------------------------------
|
||
# **********************************************************************************************
|