PDA

Afficher la version complète : Gestion de VirtualBox(partie I)



ific
05/08/2012, 15h45
Oh lala, mais c'est vide ici :-( avec toute la puissance du bash? Quel dommage... Bon, je vais en placer un.

Le script ci-dessous réalise l'installation automatique de VirtualBox ainsi que les mises à jour.
Il détecte automatiquement la version du système 32 ou 64bits et installe le kernel-devel éventuellement.
Il place le manuel dans l'emplacement choisi(lire l'entête du script).

Soit donc: téléchargemement depuis le site Oracle, vérification de la clé et checksum des différents fichiers.

install, désinstall et maj sont entièrement automatique, il faut juste fournir le passe root lorsqu'il est demandé.

Il reste seulement ensuite à paramétrer l'OS invité et installer les guest-additions dedans.
Donc, copier le script dans kwrite, le sauvegarder et lui donner un nom, moi je l'ai baptisé: vbox_install
Ne pas oublier de le rendre exécutable!
Attention: lancer simplement le script si l'on est sudoer, sinon le lancer sous root.
Lancer le script et suivre les instructions.
La bonne façon est de placer le script dans un répertoire /bin de son home, répertoire figurant dans le path
utilisateur, ainsi il suffira de taper vbox_install en console et c'est parti.
Attention: ouvrir la console en plein écran afin de bien observer les infos du déroulement de l'opération.

oups, le script est trop gros! il faut que je le coupe en deux :-(

script vbox_install partie I (ATTENTION:version obsolète, voir version suivante 1.20)


#! /bin/bash -
VERSION=1.16b # version modifiée pour openSuse
# But: Mise à jour automatique de VirtualBox.
# Installation automatique du kernel-source si nécessaire, ainsi que wget.
# Consultation du site Oracle pour éventuelle nouvelle version, si upgrade possible, demande pour upgrader et
# si oui télécharge le rpm, installe la clé publique si ce n'est n'est déjà fait, vérifie la signature
# du rpm puis l'installe et termine par le setup. Gère automatiquement les systèmes 32 et 64bits.
# Télécharge les extensions et les installe.
# N.B:
# - Il est nécessaire d'être sudo sinon, lancer le script sous root.

#---------------------------------------------------------------------------------
MAN=$HOME/Z-linux/Doc/Progs/Virtualbox # emplacement d'accueil par défaut, du manuel utilisateur, modifier selon besoin.

URL=http://download.virtualbox.org/virtualbox # URL du dépot VirtualBox
KEYname=oracle_vbox.asc # nom de la clé publique
KEYpath=/debian/$KEYname

REQ32="dkms wget openssl libpng12-0 gcc" # pour i586
REQ64="dkms wget openssl libpng12-0 gcc" # pour x86_64 python-libs

#--------------------- Début de la zone des fonctions ----------------------------
HELP()
{ clear
echo;echo -e " But de ce programme: Mise à jour automatique de VirtualBox depuis le dépot.
Consultation du dépot pour éventuelle nouvelle version, si upgrade possible, demande la permission
d'upgrader, si oui, télécharge le rpm, installe la clé publique (si ce n'est n'est déjà fait)
Vérifie les checksums et la signature du rpm VirtualBox; télécharge le manuel et installe le tout.
Termine par le setup de VirtualBox.

Usage: `basename $0` [argument éventuel]
Arguments: --help ou encore ? (en fait n'importe quoi donne ce mémo)
Exemple: `basename $0` --help
--help Aide
-v Version"
echo;echo;exit 0
}

BIP()
{ echo -en "\a";sleep 0.4;echo -en "\a";}

if [ $# -gt 0 ]; then
case $1 in
-v)
echo;echo " VERSION:" $VERSION
echo;echo;exit 0;;
--help)HELP;;
*)HELP;;
esac
fi

trap "rm -f $HOME/tmp/source_VB* $HOME/tmp/extpack*" EXIT HUP INT QUIT ABRT TERM

SETUP()
{ echo;echo " *** Setup de VirtualBox ***"
echo " patience..."
echo
sudo /etc/init.d/vboxdrv setup
if [ $? = 0 ]; then
echo;echo " *** Le setup a réussi. ***"
echo;echo -e " \033[1;37;44m *** TERMINE... *** \033[0m"
echo;echo;exit 0
else
echo;echo " !!! Setup avorté... !!!"
echo;echo;exit 1
fi }

TERM()
{ rm -f MD5SUMS LATEST.TXT $KEYname $FICH *.vbox-extpack $O &>/dev/null
echo;echo -e " \033[1;37;44m *** TERMINE... *** \033[0m"
echo;echo;exit 0;}

NOCOMM()
{ echo;echo " !!! Le site est actuellement injoignable... !!!"
echo;echo;exit 1;}

BARREGRAPH()
{ case $1 in
"start")
( trap "tput rc;tput dl1;tput cnorm; exit" EXIT HUP INT QUIT ABRT TERM
tput civis;tput sc;COLS=$(tput cols);x=0
while [ -d /proc/$$ ]; do
sleep 0.2;tput rc;tput hpa $x;tput el;echo -n "#"
let "x += 1"
if [ $x = $COLS ]; then tput rc;tput dl1;x=0;fi
done
) & PIDSS=$! ;;
"stop") kill $PIDSS ;;
esac }


# --------------------------------------------- Début du programme de travail ----------------------------------------------
clear;echo
k=`uname -r | cut -d"-" -f1,2`;test -d /usr/src/linux-$k
if [ $? = 1 ]; then
echo " *** WARNING: le Noyau source du noyau actuel: kernel-desktop-devel-$k est nécessaire!... ***"
echo " Installation du noyau source, patience..."
sudo zypper -q -n in kernel-devel
if [ $? = 0 ]; then
echo " * L'installation du noyau source a réussi. *"
echo -e "\n\n\n\n"
else
BIP;echo " * L'installation du noyau source a échoué...*"
echo;echo;exit 1
fi
fi
OS=`uname -m`
OS1=`echo $OS | cut -c 1`
if [ "$OS1" = "i" ]; then REQ=$REQ32;OS=i586;fi
if [ "$OS1" = "x" ]; then REQ=$REQ64;OS=x86_64;fi
for F in "$REQ"; do
rpm -q $F &>/dev/null
if [ $? != 0 ]; then
clear;echo;echo " *** Installation de programmes requis pour le fonctionnement du script..."
echo " Patience..."
echo;sudo zypper -q -n in $F;a=$?
if [ "!!" != "o" -o "!!" != "O" ]; then
if [ "$a" != "0" ]; then
echo;echo -e " !!!-!!! Le programme suivant : \033[1;32;40m$F\033[0m indispensable au fonctionnement du script n'a pu être installé!... !!!-!!!"
echo;echo;exit 1
fi
fi
fi
done
echo
cd $HOME/tmp
rpm -qa | grep -q VirtualBox
if [ $? = 0 ]; then
Warn=`VBoxManage -v | sed '/WARNING:/!d'`
if [ "$Warn" != "" ]; then
echo;echo;VBoxManage -v;echo;echo;exit 1
fi
ACT=`VBoxManage -v | cut -dr -f1`
else
ACT="Aucune"
fi
BARREGRAPH start
wget -q -O - $URL/LATEST.TXT 1>LATEST.TXT
BARREGRAPH stop
sleep 0.2
if [ -s LATEST.TXT ]; then
NOUV1=`cat LATEST.TXT`
if [ "$NOUV1" != "" -a "$NOUV1" != "$ACT" ];then
echo " *** Il y a une nouvelle version sur le dépot. ***"
echo -e " Version actuellement installée: \033[1;34;40m$ACT\033[0m Nouvelle version: \033[1;32;40m$NOUV1\033[0m"
echo " Pour INSTALLER la nouvelle version, taper: i"
echo " Pour quitter sans installer, taper: Entrée"
echo;read -n1 -p " Réponse: " rep
case $rep in
"")echo " OK, on quitte.";echo;exit 0;;
i)clear;echo;echo;echo -e " * OK, installation de VirtualBox \033[1;32;40m$NOUV1\033[0m *";;
*)echo;exit 0;;
esac
else
clear;echo
echo -e " ** Il n'y a pas de version plus récente que celle installée actuellement: \033[1;32;40m$NOUV1\033[0m **"
echo " Pour REFAIRE toute l'installation, taper: r"
echo " Pour reprendre le SETUP de l'installation actuelle, taper: s"
echo " Pour QUITTER, taper: Entrée"
echo;read -n1 -p " Réponse: " rep
case $rep in
"") echo " OK, on quitte.";echo;exit 0;;
r);;
[s]) SETUP;;
*)echo;echo;exit 0;;
esac
fi
else
NOCOMM
fi

# coller ici la suite partie II

ific
07/10/2012, 18h34
== 20.02.2013 Version: Nouvelle mise à jour du script. Il s'agit d'une simplification et une réorganisation de l'installation.

début du script:


#! /bin/bash -
VERSION=1.20 # du 20.02.2013 simplification et réarrangement du déroulement de l'installation.
# version modifiée pour openSuse.
# But: Mise à jour automatique de VirtualBox.
# Installation automatique du kernel-source si nécessaire, ainsi que wget.
# Gère automatiquement les systèmes 32 et 64bits.
# Consultation du site Oracle pour éventuelle nouvelle version, si upgrade possible, demande pour upgrader et
# si oui télécharge le rpm, installe la clé publique si ce n'est déjà fait, vérifie la signature du rpm et son checksum.
# Télécharge le manuel et le place dans le répertoire indiqué par la variable MAN. l'installe et termine par le setup.
# Télécharge les extensions et demande à rebooter afin de procéder à l'installation de VirtualBox au lancement suivant du script.
# Puis termine par le setup de VirtualBox.
# On peux aussi uniquement désinstaller ou refaire le setup de la version installée.
# N.B:
# - Il est nécessaire d'être sudoer sinon, lancer le script sous root.

#---------------------------------------------------------------------------------
MAN=$HOME/Z-linux/Doc/Progs/Virtualbox # emplacement d'accueil par défaut, du manuel utilisateur, modifier le path selon besoin.

URL=http://download.virtualbox.org/virtualbox # URL du dépot VirtualBox chez Oracle
KEYname=oracle_vbox.asc # nom de la clé publique
KEYpath=/debian/$KEYname

REQ32="dkms wget openssl libpng12-0 gcc" # pour i586
REQ64="dkms wget openssl libpng12-0 gcc" # pour x86_64 python-libs
OS=`uname -m`

cd $HOME/tmp

#--------------------- Début de la zone des fonctions ----------------------------
HELP()
{ clear
echo;echo -e " But de ce programme: Mise à jour automatique de VirtualBox depuis le dépot.
Consultation du dépot pour éventuelle nouvelle version, si upgrade possible, demande la permission
d'upgrader, si oui, télécharge le rpm, installe la clé publique (si ce n'est n'est déjà fait)
Vérifie les checksums et la signature du rpm VirtualBox; télécharge le manuel et installe le tout.
Termine par le setup de VirtualBox.

Usage: `basename $0` [argument éventuel]
Arguments: --help ou encore ? (en fait n'importe quoi donne ce mémo)
Exemple: `basename $0` --help
--help Aide
-v Version"
echo;echo;exit 0
}

BIP()
{ echo -en "\a";sleep 0.4;echo -en "\a";}

if [ $# -gt 0 ]; then
case $1 in
-v)
echo;echo " VERSION:" $VERSION
echo;echo;exit 0;;
--help)HELP;;
*)HELP;;
esac
fi

trap 'rm -f $HOME/tmp/source_VB* $HOME/tmp/extpack*' EXIT HUP INT QUIT ABRT TERM

SETUP()
{ clear;echo;echo -e " *** Setup de VirtualBox: \033[1;32;40m$ACT\033[0m ***"
echo " patience..."
echo
sudo /etc/init.d/vboxdrv setup
if [ $? = 0 ]; then
echo;echo " *** Le setup a réussi. ***"
echo;echo -e " \033[1;37;44m *** TERMINE... *** \033[0m"
echo;echo;exit 0
else
echo;echo " !!! Setup avorté... !!!"
echo;echo;exit 1
fi }

TERM()
{ rm -f vb_inst-ready.txt MD5SUMS $KEYname $FICH *.vbox-extpack $O &>/dev/null
echo;echo -e " \033[1;37;44m *** TERMINE... *** \033[0m"
echo;echo;exit 0;}

NOCOMM()
{ echo;echo " !!! Le site est actuellement injoignable... !!!"
echo;echo;exit 1;}

BARREGRAPH()
{ case $1 in
"start")
( trap "tput rc;tput dl1;tput cnorm; exit" EXIT HUP INT QUIT ABRT TERM
tput civis;tput sc;COLS=$(tput cols);x=0
while [ -d /proc/$$ ]; do
sleep 0.2;tput rc;tput hpa $x;tput el;echo -n "#"
let "x += 1"
if [ $x = $COLS ]; then tput rc;tput dl1;x=0;fi
done
) & PIDSS=$! ;;
"stop") kill $PIDSS ;;
esac }

# --------------------------------------------- Début du programme de travail ----------------------------------------------
clear;echo
# Boucle pour le second tour.
FICH=`sed '1!d' vb_inst-ready.txt 2>/dev/null` # test de présence du fichier pour la phase d'installation au second tour
if [ "$FICH" != "" ]; then
NOUV=`echo "$FICH" | cut -d"-" -f3 | cut -d"_" -f1`
echo;echo -e " *** Installation de VirtualBox \033[1;32;40m$NOUV\033[0m ***"
echo " patience..."
echo
sudo zypper -q -n install $FICH
sleep 1
rpm -q `echo "$FICH" | sed 's/.'"${OS}"'.rpm//'` >/dev/null
if [ $? = 0 ]; then
echo;echo -e " *** Installation de VirtualBox \033[1;32;40m$NOUV\033[0m réussie ***"
echo
else
echo;echo " !!! Installation avortée! !!!"
echo;echo; exit 1
fi
echo " *** Insertion des extensions ***"
echo " patience..."
echo
sudo VBoxManage extpack cleanup
EXTPACK=`cat MD5SUMS | sed '/vbox-extpack/!d' | sed '$!d' | sed -e 's/^.* [*, ]//'`
if [ "$EXTPACK" != "" ]; then
sudo VBoxManage extpack install $EXTPACK
if [ $? = 0 ]; then
echo;echo -e " *** Insertion de \033[1;32;40m$EXTPACK\033[0m réussie ***"
echo " Installation complète... "
echo " Attention: Affecter le groupe vboxuser à l'utilisateur et rebooter la machine"
echo
else
echo;echo -e " !!! L'insertion de \033[1;32;40m$EXTPACK\033[0m a échoué !!!"
echo;echo;exit 1
fi
fi
TERM
fi

# Tests et installation des programmes annexes nécessaires.
k=`uname -r | cut -d"-" -f1,2`;test -d /usr/src/linux-$k
if [ $? = 1 ]; then
echo " *** WARNING: le Noyau source du noyau actuel: kernel-desktop-devel-$k est nécessaire!... ***"
echo " Installation du noyau source, patience..."
sudo zypper -q -n in kernel-devel
if [ $? = 0 ]; then
echo " * L'installation du noyau source a réussi. *"
echo -e "\n\n\n\n"
else
BIP;echo " * L'installation du noyau source a échoué...*"
echo;echo;exit 1
fi
fi
OS1=`echo $OS | cut -c 1`
if [ "$OS1" = "i" ]; then REQ=$REQ32;OS=i586;fi
if [ "$OS1" = "x" ]; then REQ=$REQ64;OS=x86_64;fi
for F in "$REQ"; do
rpm -q $F &>/dev/null
if [ $? != 0 ]; then
clear;echo;echo " *** Installation de programmes requis pour le fonctionnement du script..."
echo " Patience..."
echo;sudo zypper -q -n in $F;a=$?
if [ "!!" != "o" -o "!!" != "O" ]; then
if [ "$a" != "0" ]; then
echo;echo -e " !!!-!!! Le programme suivant : \033[1;32;40m$F\033[0m indispensable au fonctionnement du script n'a pu être installé!... !!!-!!!"
echo;echo;exit 1
fi
fi
fi
done

# Consultation du site Oracle et démarrage de l'action désirée.
echo
rpm -qa | grep -q VirtualBox
if [ $? = 0 ]; then
Warn=`VBoxManage -v | sed '/WARNING:/!d'`
if [ "$Warn" != "" ]; then
echo;echo;VBoxManage -v;echo;echo;exit 1
fi
ACT=`VBoxManage -v | cut -dr -f1`
else
ACT="Aucune"
fi
BARREGRAPH start
Latest=`wget -q -O - http://download.virtualbox.org/virtualbox/LATEST.TXT | sed -e 's/\.[0-9]$/..&/' -e 's/\.\{3\}/.0/'`
wget -q -O - http://download.virtualbox.org/virtualbox/ | sed '/HREF="[1-9]\{1,2\}.[0-5].[0-9]\{1,2\}\/"/!d' | cut -d\" -f2 | sed -e 's/\.[0-9]\/$/..&/' -e 's/\.\{3\}/.0/' | sort | sed -n '/3.0.00/,/'"${Latest}"'/p' 1>versions1.txt
BARREGRAPH stop
sleep 0.2;N=0
if [ -s versions1.txt -a "$Latest" != "" ]; then
sed -e :a -e '$q;N;6,$D;ba' versions1.txt | sed -e 's/\.0/\./' -e 's/\///' >versions2.txt
NOUV5=`sed -n '1p' versions2.txt`
NOUV4=`sed -n '2p' versions2.txt`
NOUV3=`sed -n '3p' versions2.txt`
NOUV2=`sed -n '4p' versions2.txt`
NOUV1=`sed -n '5p' versions2.txt`
rm -f versions?.txt
if [ "$NOUV1" != "$ACT" ];then
NOUV=$NOUV1;N=1
# Fin de la première partie, coller la seconde partie ici.

manchette
07/10/2012, 20h59
Salut,
merci beaucoup de ta contribution ;)