Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 12/05/2013, à 18:58

nicolas66

[script/bash] post-installation pour Ubuntu 13.04

Bonjour à tous,

Pour gagner du temps, j'ai récemment écrit un script de post-installation pour Ubuntu 13.04. J'ai hésité longuement à soumettre ce script car il est souvent propre à chacun et celui-ci n'échappe pas à la règle. Il peut néanmoins servir facilement de base pour d'autres personnes.

#!/bin/bash
#########################################################################
# Filename    : post-installation_ubuntu_13.04.sh                       #
# Description : post-installation script on Ubuntu 13.04                #
# Authors     : nicolas66                                               #
# Last release: 19-06-2013                                              #
# Requirements: zenity                                                  #
#########################################################################


function upgrade_system()
{
	sudo apt-get dist-upgrade
}

function install_nvidia_drivers()
{
	sudo apt-get update
	sudo apt-get install -y linux-headers-generic
	sudo apt-get dist-upgrade

	if [ -f ~/.reboot1 ]; then
		\rm -f ~/.reboot{0..1}
	fi

	if [ ! -f ~/.reboot0 ]; then
		touch ~/.reboot0
		zenity --info --text="L'ordinateur va rebooter une première fois (relancer cette étape)"
		sudo reboot
	fi

	sudo apt-get install -y nvidia-current-updates
	nvidia-xconfig

	if [ ! -f ~/.reboot1 ]; then
		touch ~/.reboot1
		zenity --info --text="L'ordinateur va rebooter une seconde et dernière fois (le logo nvidia doit apparaître)"
		sudo reboot
	fi
}

function remove_dash_shell()
{
	zenity --info --text="Répondre 'yes' puis 'ok' sur l'écran qui suit"
	sudo dpkg-reconfigure dash
}

function get_bash_scripts()
{
	sudo apt-get install -y lftp

	local_dir=$(zenity --entry --text="Veuillez saisir le dossier local des scripts :" --entry-text="")
	remote_dir=$(zenity --entry --text="Veuillez saisir le dossier distant des scripts :" --entry-text="")
	ftp_servername=$(zenity --entry --text="Veuillez saisir le nom du serveur ftp :" --entry-text="")
	username=$(zenity --entry --text="Veuillez saisir le login du compte ftp :" --entry-text="")
	c1="[ -d ${local_dir} ] && (lftp -e \"open ${ftp_servername}; user ${username}; mirror -v ${remote_dir} ${local_dir}; bye\"; chmod -R 755 ${local_dir}) || echo \"error: directory ${local_dir} does not exist\""
	c2="[ -d ${local_dir} ] && lftp -e \"open ${ftp_servername}; user ${username}; mirror -v -R ${local_dir} ${remote_dir}; bye\" || echo \"error: directory ${local_dir} does not exist\""

	if [ ! -d "${local_dir}" ]; then
		mkdir "${local_dir}"
		eval "${c1}"
	else
		zenity --question --text="Le répertoire ${local_dir} existe déjà. L'écraser ?"
		[ $? -eq 0 ] && eval "${c1}"
	fi

	if [ ! -f ${local_dir}/bash_aliases_common.sh ]; then
		touch ${local_dir}/bash_aliases_common.sh
	fi

	if [ ! -f ~/.bash_aliases ] || zenity --question --text="Le fichier ~/.bash_aliases existe déjà. L'écraser ?"; then
		(
			echo -e '#!/bin/bash\n'
			echo -e "alias get_scripts='${c1}'"
			echo -e "alias put_scripts='${c2}'"
			echo -e "source ${local_dir}/bash_aliases_common.sh"
			echo -e "source ${local_dir}/bash_aliases_${HOSTNAME}.sh"
		) > ~/.bash_aliases
	fi

	zenity --info --text "Pensez à fermer et ouvrir à nouveau votre terminal pour que les changements soient pris en compte."
}

function mount_nas()
{
	user=$(zenity --entry --text="Veuillez saisir le login du NAS :" --entry-text="")
	ip=$(zenity --entry --text="Veuillez saisir l'adresse ip du NAS :" --entry-text="")
	port=$(zenity --entry --text="Veuillez saisir le port SSH du NAS :" --entry-text="")
	local_dir=$(zenity --entry --text="Veuillez saisir le dossier de stockage local :" --entry-text="")
	remote_dir=$(zenity --entry --text="Veuillez saisir le dossier de stockage distant  :" --entry-text="")

	[ ! -d "${local_dir}" ] && sudo mkdir "${local_dir}"

	line="${ip}:${remote_dir} ${local_dir} nfs defaults,_netdev 0 2"
	zenity --entry --text="Veuillez copier la ligne suivante et l'ajouter à la fin du fichier qui suit :" --entry-text="${line}" &>/dev/null
	sudo gedit /etc/fstab

	sudo mount -a
}

function remove_plugins_and_lenses()
{
	sudo apt-get remove -y --purge account-plugin-aim \
				       account-plugin-facebook \
				       account-plugin-flickr \
				       account-plugin-google \
				       account-plugin-icons \
				       account-plugin-identica \
				       account-plugin-jabber \
				       account-plugin-salut \
				       account-plugin-twitter \
				       account-plugin-windows-live \
				       account-plugin-yahoo \
				       gnome-online-accounts \
				       unity-lens-*
}

function restore_old_scrollbars()
{
	sudo apt-get remove -y --purge overlay-scrollbar
}

function install_ssmtp()
{
	sudo apt-get install -y ssmtp

	sending_mail=$(zenity --entry --text="Veuillez saisir l'adresse gmail d'envoi :" --entry-text="")
	mail_server=$(zenity --entry --text="Veuillez saisir le serveur smtp :" --entry-text="smtp.gmail.com:587")
	user_login=$(zenity --entry --text="Veuillez saisir l'identifiant du compte gmail :" --entry-text="")
	user_passwd=$(zenity --entry --text="Veuillez saisir le mot de passe du compte gmail :" --entry-text="")
	host_name=$(hostname)

	str=$(cat << EOF
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=${sending_mail}

# The place where the mail goes. The actual machine name is required no 
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=${mail_server}

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=${host_name}

# User
AuthUser=${user_login}
AuthPass=${user_passwd}

# TLS
UseSTARTTLS=YES

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=NO
EOF
)

echo "${str}" | sudo tee /etc/ssmtp/ssmtp.conf >/dev/null

}

function move_window_buttons()
{
	# move window buttons on right
	sudo gsettings set org.gnome.desktop.wm.preferences button-layout ':minimize,maximize,close'
}

function active_history_completion()
{
	cat > ~/.inputrc <<  EOF
"\e[A": history-search-backward
"\e[B": history-search-forward
set show-all-if-ambiguous on
set completion-ignore-case on
EOF
}

function customize_grub2()
{
	# install grub-customizer
	sudo apt-add-repository ppa:danielrichter2007/grub-customizer
	sudo apt-get update
	sudo apt-get install -y grub-customizer

	# backup original config
	sudo cp -Rv /etc/grub.d /etc/grub.d.ori

	# remove memtest entries
	sudo chmod -x /etc/grub.d/20_memtest86+

	# edit configuration file
	zenity --info --text="Dans ce qui suit, mettre la variable 'GRUB_DISABLE_RECOVERY' à 'false'."
	sudo gedit /etc/default/grub
	sudo update-grub

	# run grub-customizer
	zenity --info --text="Dans ce qui suit:\n- Renommer les entrées 'Ubuntu' et 'Windows'\n- Supprimer le sous-menu 'Options avancées'"
	sudo grub-customizer
}

function customize_firefox()
{
	sudo mkdir /usr/share/ubuntu
	sudo ln -s /usr/share/unity-webapps /usr/share/gnome/unity-webapps
	sudo ln -s /usr/share/unity-webapps /usr/share/ubuntu/unity-webapps
	sudo ln -s /usr/share/unity-webapps /usr/local/share/unity-webapps
	zenity --entry --text="Veuillez saisir la clé pour configurer Firefox Sync :" --entry-text=""
	firefox
}

function install_java()
{
	sudo apt-add-repository ppa:webupd8team/java
	sudo apt-get update
	sudo apt-get install -y oracle-java7-installer
	cd /usr/lib/jvm
	sudo ln -s java-7-oracle default-java
	cd - &> /dev/null
}

function install_lamp_server()
{
	# packages
	sudo apt-get install -y apache2 \
			        php5 \
			        mysql-server \
			        libapache2-mod-php5 \
			        php5-mysql \
			        phpmyadmin \
			        libapache2-mod-auth-mysql \
			        php5-curl \
			        php5-xsl

	# modules activation
	sudo a2enmod auth_mysql userdir ssl
	sudo a2ensite default-ssl

	# creation of public_html directory
	mkdir ~/public_html
	chmod o+x ~ ~/public_html/

	# edit files
	zenity --info --text="Dans ce qui suit, mettre en commentaire la ligne contenant 'php_admin_value'."
	sudo gedit /etc/apache2/mods-available/php5.conf

	zenity --info --text="Dans ce qui suit, ajouter la ligne 'ServerName 127.0.0.1'."
	sudo gedit /etc/apache2/apache2.conf

	zenity --info --text="Dans ce qui suit, remplacer resp. les directives 'AllowOverride' et 'Options' par :\n- AllowOverride All\n- Options Indexes FollowSymLinks"
	sudo gedit /etc/apache2/mods-enabled/userdir.conf

	# reloading
	sudo service apache2 restart
	sudo /etc/init.d/apache2 reload
}

function install_ssh_server()
{
	# install package
	sudo apt-get install -y ssh

	# edit server config file
	zenity --info --text="Dans ce qui suit, indiquer la valeur du port SSH et basculer 'PermitRootLogin' à 'no'."
	sudo gedit /etc/ssh/sshd_config
}

function install_web_dev_kit()
{
	sudo apt-get update
	sudo apt-get install -y python-software-properties
	sudo add-apt-repository ppa:chris-lea/node.js
	sudo apt-get update
	sudo apt-get install -y nodejs
	sudo npm install jshint recess connect hogan.js uglify-js@1 -g
	sudo ln -s /usr/bin/nodejs /usr/bin/node
}

function install_latex()
{
	sudo apt-get install -y texlive \
			        texlive-bibtex-extra \
			        texlive-fonts-extra \
			        texlive-lang-french \
			        texlive-math-extra \
			        texlive-pictures \
			        texlive-science \
			        texlive-latex-extra
}

function install_extra_packages()
{
	# general
	sudo apt-get install -y gedit-plugins \
				subversion \
				bum \
				libtool \
				autoconf \
				g++ \
				moc \
				filezilla \
				imagemagick \
				manpages-fr-extra \
				ispell \
				ifrench \
				obextool \
				pdftk \
				pidgin \
				libjpeg-turbo-progs \
				exiftran \
				rar \
				unrar \
				ntfsprogs \
				gparted \
				doxygen \
				mesa-utils \
				nfs-common \
				easytag \
				fuse-utils \
				curlftpfs \
				meld \
				gnuplot-x11 \
				libglew-dev \
				libsdl1.2-dev \
				qtikz \
				gle-graphics \
				apt-file \
				gimp \
				flashplugin-installer
	sudo apt-file update
}

function repair_splash_screen()
{
	sudo apt-get install -y v86d

	resolution=$(zenity --entry --text="Veuillez saisir la résolution maximum supportée par grub. Si vous ne la connaissez pas, tapez la commande 'vbeinfo' dans grub au démarrage :" --entry-text="1440x900")
	depth=$(zenity --entry --text="Veuillez saisir la profondeur associée :" --entry-text="32")

	zenity --info --text="Dans ce qui suit, remplacer :\n- Le contenu de la variable 'GRUB_CMDLINE_LINUX_DEFAULT' par : quiet splash nomodeset video=uvesafb:mode_option=${resolution}-${depth},mtrr=3,scroll=ywrap\n- Le contenu de la variable 'GRUB_GFXMODE' par : ${resolution}"
	sudo gedit /etc/default/grub

	zenity --info --text="Dans ce qui suit, rajouter à la fin du fichier la ligne suivante :\nuvesafb mode_option=${resolution}-${depth} mtrr=3 scroll=ywrap"
	sudo gedit /etc/initramfs-tools/modules

	echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
	sudo update-grub2
	sudo update-initramfs -u
}

########################

function run_step()
{
	# $1 : function to call
	# $2 : step name
	if [ $# -eq 2 ]; then
		r=$(zenity --question --text="Lancer l'étape '$2' ?")
		[ $? -eq 0 ] && $1
	fi
}

# check internet connection
ping -q -w 5 -c 1 google.fr &> /dev/null
if [ $? -ne 0 ]; then
	echo "erreur: impossible de se connecter à internet"
	exit 1
fi

# run all previous functions
run_step upgrade_system "Mise à jour du système"
run_step install_nvidia_drivers "Installation des drivers nvidia"
run_step remove_dash_shell "Enlever le shell dash par défaut"
run_step get_bash_scripts "Récupération des scripts bash"
run_step mount_nas "Montage d'un NAS"
run_step remove_plugins_and_lenses "Désinstallation des lentilles et plugins"
run_step restore_old_scrollbars "Restaurer les anciennes barres de défilement"
run_step install_ssmtp "Installation de sSMTP"
run_step move_window_buttons "Déplacement des boutons de fenêtre"
run_step active_history_completion "Complétion dans l'historique des commandes"
run_step customize_grub2 "Personnalisation de grub2"
run_step customize_firefox "Personnalisation de firefox"
run_step install_java "Installation de Java"
run_step install_lamp_server "Installation du serveur LAMP"
run_step install_ssh_server "Installation du serveur SSH"
run_step install_web_dev_kit "Installation du devkit web pour bootstrap"
run_step install_latex "Installation de LaTeX"
run_step install_extra_packages "Installation de paquets supplémentaires"
run_step repair_splash_screen "Réparation de l'écran de démarrage (nécessite les drivers nvidia)"

Voilà, en espérant que ça puisse aider smile


--
Nicolas.

Dernière modification par nicolas66 (Le 19/06/2013, à 11:36)


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#2 Le 12/05/2013, à 19:01

toutafai

Re : [script/bash] post-installation pour Ubuntu 13.04

Bonsoir,
bouh le vilain copier/coller :

# check internet connection
ping -q -w 5 -c 1 google.fr &> /dev/null
if [ $? -ne 0 ]; then
	echo "error: internet connection seems to be down. Please activate it before running this script again"
	exit 1
fi

lol Sinon, bon boulot et merci pour le partage


Ubuntu Server 12.04 x32 sur IBM P4. - Seven / Ubuntu 12.04 LTS / 13.10 x64 sur Lenovo ThinkPad. Purée d'unity...difficile de s'y faire - canon MG5350 - Logitech Quickcam 3000 - TNT Intuix S800 - Freebox v6 révolution (Trop de la balle !!!)
Utilisateur d'Ubuntu depuis novembre 2006.
23 PC libérés grâce aux OS libres !

Hors ligne

#3 Le 12/05/2013, à 19:03

nicolas66

Re : [script/bash] post-installation pour Ubuntu 13.04

Rien n'est pompé, c'est du home-made à 100% wink


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#4 Le 12/05/2013, à 20:41

toutafai

Re : [script/bash] post-installation pour Ubuntu 13.04

je vois Monsieur chipotte : bon ok, mais c'est pas traduit alors tongue


Ubuntu Server 12.04 x32 sur IBM P4. - Seven / Ubuntu 12.04 LTS / 13.10 x64 sur Lenovo ThinkPad. Purée d'unity...difficile de s'y faire - canon MG5350 - Logitech Quickcam 3000 - TNT Intuix S800 - Freebox v6 révolution (Trop de la balle !!!)
Utilisateur d'Ubuntu depuis novembre 2006.
23 PC libérés grâce aux OS libres !

Hors ligne

#5 Le 12/05/2013, à 21:37

nicolas66

Re : [script/bash] post-installation pour Ubuntu 13.04

C'est juste que ça n'est jamais très flatteur d'être accusé à tort de plagiat ...


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

Haut de page ↑