install-debian/post_install_sid.sh

1228 lines
42 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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:
## 2015-09-03
## - Add asr-manpages, knockd, lynx, urlview packages
## 2015-09-02
## - Add iceowl-extension pkg, the new way to manage calendar (lightning) with Thunderbird/Icedove
## 2014-12-08 -
## - Ajout de mat, dwb
## 2014-05-19 -
## - Ajout de luakit
## 2014-04-28 -
## - Ajout de multitail
## 2014-01-09 -
## - Ajout de knockd et pidgin-otr
## 2013-11-23 -
## - Ajout de weechat-curses comme client irc à la place de irssi
## - Ajout de openvpn - midori (à la place de chromium)
## 2013-06-28 - 0.03.29
## - ajout des paquets: libreoffice-pdfimport fonts-linuxlibertine
## 2013-06-20 - 0.03.28
## - Ajout de l'installation du paquet wakeonlan
## 2013-02-27 - 0.02.27
## - Ajout du paquet moreutils
## 2012-09-06
## - Ajout du paquet dnsutils
## 2012-06-29 - 0.6.29
## - Ajout du paquet wpasupplicant qui avait été oublié ...
## 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-19 - 0.4.19
## - Ajout du paquet vlock
## 2012-04-11 - 0.4.11
## - Ajout du paquet mumble
## 2012-04-04 - 0.4.4:
## - Ajout du paquet alsa-utils
## 2012-04-03 - 0.4.1:
## - Ajout du paquet mirage (visionneuse image)
## - Ajout du paquet keychain (clef ssh/passphrase)
## 2012-03-23 - 0.3.1:
## - Ajout de vim et tmux dans la partie Outils systèmes
## - Ajout des parties: serveur graphique, openbox, outils bureautique (graphique+shell)
# **********************************************************************************************
# **********************************************************************************************
## À 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" eog evince etherape gedit gnome-calculator gparted nemo nemo-fileroller planner
###########################################################
###########################################################
## 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 git git-svn gpm hddtemp htop ifscheme 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 shell
# Liste: backuppc - bsdmainutils - colordiff - cpio - ethtool - exuberant-ctags - iperf - genisoimage - knockd - lzip - moreutils - multitail - mr - ntfs-3g - openvpn - pmount - screen - tmux - unrar - unzip - urlview - vim-nox - vim-doc - vim-scripts - vlock - wakeonlan - zsh - zip
## Remove: bluetooth bluez vim-tiny
###########################################################
###### Pré-configuration
# Chargement d'un fichier preseed
preconfig backuppc
###### Installation
aptins "System tools for shell" backuppc bsdmainutils colordiff cpio ethtool iperf genisoimage knockd lzip moreutils multitail mr ntfs-3g openvpn pmount screen tmux unrar unzip urlview vim-nox vim-doc vim-scripts vlock wakeonlan zsh zip
###### Remove
arem "Purge: System tools for shell" bluetooth bluez vim-tiny
###### Post-configuration
# vim-nox comme éditeur par défaut pour la ligne de commande
update-alternatives --set editor /usr/bin/vim.nox
## Changement du shell par défaut pour les utilisateurs
# Root
chsh -s /bin/zsh
rm -f ~/.bash* ~/.profile
# Pour les utilisateurs déjà existants:
#usermod -s /bin/zsh "${new_username}"
chsh -s /bin/zsh "${new_username}"
# Pour les nouveaux utilisateurs
sed -i "s;/bin/bash;/bin/zsh;" /etc/adduser.conf
mkdir -p /home/"${new_username}"/.zsh
chown "${new_username}":"${new_username}" /home/"${new_username}"/.zsh
## Disable Openvpn to automatically start
systemctl disable openvpn.service
###### Information pour l'utilisateur final
cat >> "${INFORMATION}" << EOF
====== System tools for shell - Doc ======
Voici la liste des paquets installés :
+backuppc : Outils de sauvegarde/restauration (totale et incrémentielle) disposant en plus d'une interface web
--Permet également de sauvegarder des machines distantes
+bsdmainutils : Fournit un ensemble d'outils de base d'un système bsd. Fournit par exemple column.
+colordiff : permet d'ajouter de la couleur à la commande diff
+cpio : prise en charge des archives au format cpio.
+ethtool : Permet d'afficher des informations et d'interagir avec les cartes réseaux.
--Exemple:
# ethtool eth0
--Désactiver le wol:
# ethtool -s eth0 wol d
--Changer la vitesse de sa carte réseau:
# ethtool -s eth0 autoneg off speed 1000
--Note: ces modifications ne survivent normalement pas à un redémarrage
+exuberant-ctags : Permet de créer un index de tag pour des définitions de code source.
-À utiliser avec vim
+iperf : Permet de mesurer la bande passante entre deux machines (doit-être installé sur les 2).
--Sur le serveur:
# iperf -s
--Sur le client:
# iperf -c IP_SERVEUR
+genisoimage : permet de créer une image iso à partir d'un répertoire
--Exemple:
# genisoimage -R -r -J -oliet-long --hide-rr-moved -iso-level 4 -V \"Label de l\'iso\" -o test.iso /home/test/new_iso
+knockd : Permet d'exécuter des commandes si une série de ports spécifique est contacté depuis l'extérieur.
+lzip : prise en charge des archives au format lzip (algo basé sur lzma).
+moreutils : Fournit quelques petits programmes utiles:
--vidir: Édition du contenu d'un répertoire (renommage de fichiers, ...)
+multitail : Permet de suivre un fichier de manière similaire à Tail mais avec plus de fonctionnalité (ncurses, splits, commandes, ...)
# multitail -sw 20,155,10 -sn 2,2 -ke "64 bytes from " -l "ping 8.8.4.4" -ke "64 bytes from " -l "ping 8.8.8.8" --mark-change /var/log/messages -I /var/log/mail.log -I /var/log/syslog -wh 15 -ci green /var/log/dpkg.log -ci red -I /var/log/apache2/error.log -ke "64 bytes from " -l "ping 208.67.222.222"
+mr: Un outil pour gérer plusieurs type de dépôts de gestionnaires de versions (Git, svn, …).
+ntfs-3g : permet la prise en charge des partitions ntfs.
--Pour formater une partition ntfs :
# mkntfs /dev/partition
+openvpn : Permet de se connecter à un vpn pour communiquer avec d'autres machines en "privé"
+pmount : permet à l'utilisateur normal de monter des périphériques
+screen : mutliplexeur de terminaux
--Plus d'info :
http://doc.xubuntu-fr.org/screen
+tmux : multiplexeur de terminaux
--Ressemble beaucoup à screen, mais offre une configuration plus facile
+unrar : permet la prise en charge du format de compression rar
--Plus d'info :
$ man unrar
+unzip : permet la prise en charge du format de compression zip
--Plus d'info :
$ man unzip
+urlview : Extrait des adresses depuis la ligne de commandes puis propose de manière simple de les lancer via le navigateur par défaut.
--Il est possible d'associer un raccourcis clavier dans Tmux pour qu'il appelle directement urlview pour analyser son contenu:
- bind-key u capture-pane \; save-buffer ~/.tmux/.tmux-buffer \; new-window -n "urlview" '$SHELL -c "urlview < ~/.tmux/.tmux-buffer"'
+vim-nox : version amélioré du célèbre éditeur en ligne de commande: VI
--Remplace vim-tiny et peut-être défini comme éditeur par défaut
-vim-doc : Documentation de vim
-vim-scripts : Ensemble de greffons (voir http://www.vim.org/scripts/ pour plus d'informations)
+vlock : Permet de verrouiller le terminal courant. Dans mon cas, c'est tmux qui est verrouillé au bout d'un certain temps
d'inactivité.
+wakeonlan : Permet de réveiller une machine du réseau à partir de son adresse MAC.
-wakeonlan XX:FF:DD:SS:QQ:ZE
+zsh : un interpréteur de commandes comme peut l'être bash ou sh mais beaucoup plus performant et avec plus de fonctionnalités
+zip : permet de compresser dans une archive zip à partir du shell
EOF
###########################################################
## 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 - ifscheme - wireless-tools
## Suppression de firmware-brcm80211 le temps de vérifier si il est nécessaire avec une nouvelle installation
###########################################################
if [ "$(lspci | grep -i BCM43)" ]; then
###### Installation
#aptins "Outils gestion wifi" firmware-brcm80211 ifscheme wireless-tools wpasupplicant
aptins "Outils gestion wifi" linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,') broadcom-sta-dkms ifscheme wireless-tools wpasupplicant
###### 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
+ifscheme : permet de définir différentes configuration réseau (ethernet ou wlan) parmis lesquelles
il sera possible de switcher, facilitant ainsi le changement de réseau sans-fil sans gui.
--Avec le bon fichier de configuration (gestion de plusieurs profils sur wlan0), pour se connecter au réseau wifi_de_toto, il faudra par exemple faire:
$ ifdown wlan0
$ ifscheme toto
$ ifup wlan0
-Plus d'infos:
-- http://b.twidi.com/index.php/2006/03/27/55-un-portable-plusieurs-reseaux-sous-linux-debian-ubuntu
-- http://www.alwayssunny.com/blog/?p=30
+wireless-tools : contient des outils pour agir sur les interfaces sans fil
+wpasupplicant : gestion des clients wpa et wpa2
EOF
fi
###########################################################
## Network share
## Liste: keychain - knockd - nfs client - ssh
## Remove: nfs-kernel-server samba
###########################################################
###### Pre-configuration
#preconfig samba
###### Installation
aptins "Network share" keychain knockd nfs-common openssh-server
###### 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
###### Information for end user
#### See README.md
###########################################################
## Internet tools for shell
## Liste: axel - finch - postfix - weechat-curses
###########################################################
###### Installation
aptins "Internet tools for shell" 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
## Liste : browser-plugin-freshplayer-pepperflash - dwb - filezilla - icedove - icedove-l10n-fr - iceowl-extension - iceweasel (experimental) - iceweasel-l10n-fr - luakit - midori - pepperflashplugin-nonfree - pidgin - pidgin-otr - pidgin-microblog - rdesktop - sun-java6-jre - transmission - tsclient - xvnc4viewer -
## Remove: flashplugin-nonfree flashplugin-nonfree-extrasound
## Désactivé: sun-java6-jre
###########################################################
###### Pré-configuration
# Chargement d'un fichier preseed
#preconfig sun-java6-jre
###### 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 tsclient 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
###### Installation manuelle
#### Teamviewer
#teamviewer="teamviewer.deb"
### Téléchargement
#if [ "${ARCH}" = 64 ] # Pour un système 64 bits
#then
#axel http://www.teamviewer.com/download/teamviewer_linux_x64.deb -o "${teamviewer}" > /dev/null 2> "${fichier_erreur}"
#elif [ "${ARCH}" -eq 86 ] # Pour un système 32 bits
#then
#axel http://www.teamviewer.com/download/teamviewer_linux.deb -o "${teamviewer}" > /dev/null 2> "${fichier_erreur}"
#fi
### Installation
#if [ "$?" = 0 ]; then # Si le téléchargement s'est bien déroulé
#dpkg -i "${teamviewer}" > /dev/null
#rm -f "${teamviewer}"
#else
#echow "Erreur lors du téléchargement du paquet teamviewer. Voir le fichier configuration.tmp pour plus de détails."
#fi
###### Information pour l'utilisateur final
cat >> "${INFORMATION}" << EOF
======Internet tools for X11======
Voici la liste des paquets installés :
+browser-plugin-freshplayer-pepperflash : Adapter to get Pepperflash (Chrome) plugin working in Firefox.
+chromium-browser : navigateur open-source qui sert également de base pour google chrome.
-chromium-l10n : pack de langue
+dwb : navigateur léger en c/gtk.
+filezilla : client FTP graphique
+flashplugin-nonfree : Plugin flashplayer
-flashplugin-nonfree-extrasound : Extension du plugin pour gérer le son
+icedove : gestionnaire de mails et flux rss
-icedove-l10n-fr : Pack de langue fr
+iceowl : nouvelle extension qui permet de gérer les calendriers dans Icedove/Thunderbird. Remplace Lightning.
+iceweasel (experimental) : Équivalent de firefox pour Debian
-iceweasel-l10n-fr : pack de langue fr
+luakit : navigateur internet léger en Lua.
+mat : supprimer les métadonnées des fichiers (avant mise en ligne par exemple …)
-- dispose également d'une interface graphique:
% mat-gui
+pepperflashplugin-nonfree : Pepper Flash Player from Google Chrome.
+pidgin : Client messagerie graphique
+pidgin-microblog : plugin pour pidgin qui permet d'utiliser les réseaux sociaux (twitter, facebook, ...)
--Plus d'informations disponible sur : http://developer.pidgin.im/wiki/Using%20Finch
+rdesktop : Client RDP pour Windows Terminal Server
+sun-java6-jre : Fournit les fichiers nécessaires pour l'accès vnc dans firefox
+teamviewer : Accès à distance et partage de bureau multi-os
+transmission : Client bittorent (graphique et commande)
--Lancement du daemon :
$ transmission-daemon -g ~/.config/transmission
--Liste les torrents en cours de téléchargement :
$ transmission-remote
--Ajouter un torrent :
$ transmission-remote -a torrent-file
+tsclient : Interface graphique pour rdesktop (RDP, X, ...)
+xvnc4viewer : Permet l'accès VNC à des serveurs VNC
EOF
###########################################################
## Office tools for shell
## 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 shell" cups devtodo graphviz imagemagick imagemagick-doc odt2txt pdftk texlive texlive-latex-extra vim-latexsuite
###### Remove
arem "Purge: Office tools for shell" 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!
###########################################################
## Outils bureautique (graphique)
## Liste : freeplane - key-mon - libreoffice - libreoffice-l10n-fr - libreoffice-help-fr - libreoffice-pdfimport - fonts-linuxlibertine - ttf-ancient-fonts - verbiste - verbiste-gnome
###########################################################
###### 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
###### Information pour l'utilisateur final
cat >> "${INFORMATION}" << EOF
======Instructions Outils bureautique (graphique)======
Voici la liste des paquets installés :
+freeplane : Programme Java pour créer/éditer des mind maps (carte heuristique)
+key-mon : Petit outils graphique qui affiche dans une fenêtre les touches tapées
--Très pratique pour la réalisation de tuto vidéo
+libreoffice : La très classique et complète suite bureautique
-libreoffice-l10n-fr : pack français
-libreoffice-help-fr : aide francaise
-libreoffice-pdfimport : import de pdf (très très réussi)
-fonts-linuxlibertine : ajoute la police libertine
+ttf-ancient-fonts: Ajoute la police qui permet d'avoir pas mal d'emoji.
-See: https://en.wikipedia.org/wiki/Emoji#Blocks
+verbiste : Programme qui permet de configurer les verbes (français et italien)
-verbiste-gnome : Interface graphique pour gnome
EOF
###########################################################
## 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
###########################################################
## Jeux
## Liste: teeworlds - teeworlds-server
###########################################################
###### Installation
aptins "Jeux =)" teeworlds teeworlds-server
###### Information pour l'utilisateur final
cat >> "${INFORMATION}" << EOF
======Instructions Jeux======
Voici la liste des paquets installés :
+teeworlds : Petit jeu libre de fps ressemblant à worms.
+teeworlds-server : Serveur de jeu pour teeworlds
EOF
###########################################################
## Inutiles donc nécessaires
## Liste: asr-manpages - cmatrix - cowsay - fortunes - funny-manpages - linuxlogo - sl
###########################################################
###### Installation
aptins "Paquets inutiles" asr-manpages cmatrix cowsay fortunes funny-manpages linuxlogo sl
###### Information pour l'utilisateur final
cat >> "${INFORMATION}" << EOF
======Instructions Paquets inutiles======
Voici la liste des paquets installés :
+asr-manpages : Pages de manuel de alt.sysadmin.recovery.
-- Liste des man disponibles:
# dpkg -L asr-manpages
+cmatrix: affiche la matrice dans un terminal
+cowsay : Fait parler différents personnages en ligne de commande
--Essayer la commande :
# bonjour
--chez moi, bonjour est un alias vers : 'echo Bonjour $USER, nous sommes le `date +"%A %e %B %Y"`, et il est : `date +"%H"` h `date +"%M"` | cowsay -f $(/bin/ls /usr/share/cowsay/cows -1 | head -n $(expr $$$(date +%s) % $(ls /usr/share/cowsay/cows | wc -w) + 1) | tail -n 1)'
+fortunes : Collection de phrases françaises
+funny-manpages : Un ensemble de pages de manuel humoristiques, exemple: rtfm, baby, celibacy, party, condom, flame, ...
+linuxlogo : Permet d'afficher un logo avec quelques informations sur le système. Exemple:
$ linux_logo -f -d
+sl : affiche une animation si on tape sl à la place de ls
EOF
###########################################################
## Manpages / Documentation
## Liste: aptitude-doc-fr info manpages-fr manpages-fr-dev manpages-fr-extra
###########################################################
###### Installation
aptins "Manpages" aptitude-doc-fr info manpages-fr manpages-fr-dev manpages-fr-extra
###### Information for end user
cat >> "${INFORMATION}" << EOF
====== Manpages / Documentation ======
Voici la liste des paquets installés :
+info : Program which allow to view Info documents. Much of Debian packages
comes with documentation in Info format.
% info redshift
EOF
# 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
# -----------------------------------------------------------
# **********************************************************************************************