Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/11/2018, à 15:30

Skratsh

[RESOLU] Script Installation

Bonjour à tous !

J'ai fait un petit script pour le boulot qui me permet de lancer plusieurs commandes sur des nouveaux PC, qui marche très bien pour le coup, mais je regardais s'il était possible de rendre ça plus joli, avec whiptail qui nous donne une barre de chargement approximative pour le coup, malheureusement ça fait n'importe quoi mad Quelqu'un aurait une idée de mon ou mes erreurs ?

#!/bin/bash
sudo passwd root ;
{
	sleep 0.5
	echo -e "XXX\n0\nCreation du mdp root\nXXX"
	sleep 2 ;
        
	sleep 0.5
	echo -e "XXX\n15\nVerification des maj\nXXX"
	sleep 2 ;
	sudo apt-get update ;

	sleep 0.5
	echo -e "XXX\n30\nInstallation des maj\nXXX"
	sleep 2 ;
	sudo apt-get --yes upgrade ;

	sleep 0.5
	echo -e "XXX\n45\nInstallation de vim et puppet\nXXX"
	sleep 2 ;
	sudo apt-get --yes install vim puppet ;

	sleep 0.5
	echo -e "XXX\n60\nCreation de la clef ssh\nXXX"
	sleep 2 ;
	yes "o" | ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa ;

	sleep 0.5
	echo -e "XXX\n75\nRedemarrage du service ssh\nXXX"
	sleep 2 ;
	sudo /etc/init.d/ssh restart ;

	sleep 0.5
	echo -e "XXX\n90\nActivation de la connexion ssh en root\nXXX"
	sleep 2 ;
	sudo sed -i 's/\(#PermitRootLogin prohibit-password\).*/\PermitRootLogin yes/' /etc/ssh/sshd_config ;

	sleep 0.5
	echo -e "XXX\n100\nInstallation Unity\nXXX"
	sleep 2 ;
	sudo apt-get --yes install ubuntu-unity-desktop ; 
} |whiptail --title "Installation 3CMA" --gauge "Installation en cours" 6 60 0 ;

	echo "Fin de l'installation automatique, il reste a  finir l'installation de puppet, enlever les mises en veilles et le trousseau chrome, et à intégrer les infos de la machine dans le wiki et le drive." 

Edit : Je pars de ce topic https://stackoverflow.com/questions/409 … progress-b

Dernière modification par Skratsh (Le 03/12/2018, à 17:04)

Hors ligne

#2 Le 30/11/2018, à 19:01

Hizoka

Re : [RESOLU] Script Installation

Salut,

tu crées une fonction qui affiche une barre et le texte, et tu l'appelles en lui passant le pourcentage et le texte à afficher.

Perso, j'ai ça :

function superprogression
{
# ${1} : Pourcentage à afficher sans le signe %
# ${2} : texte à afficher
unset progression progression_barre

FUCHSIA="\033[1;35m"
RAZ="\e[m"
BLEUFONCE="\033[1;34m"
VERT="\033[0;32m"
ROUGE="\033[1;31m"

# Verifie que le chiffre ne dépasse pas 100%
[[ ${1} != [0-9]* || ${1} -gt 100 ]] && return

# Ajoute un ou deux 0 si besoin à la variable progression
printf -v progression "%03d" "${1}"

# Si le pourcentage est pair on y soustrait 1
(( (${1} % 2) == 1 )) && progression_barre=$(( (${1} - 1) / 2 ))

if [[ $(tput cols) -gt 150 ]]
then
    # Utilisation de 50 caractères = ou espaces
    barre="===================================================================================================="
    espace="                                                                                                    "

    # Pas de division car la barre fait 100
    progression_barre=${1}

    largeur_max=100

elif [[ $(tput cols) -gt 100 ]]
then
    # Utilisation de 50 caractères = ou espaces
    barre="=================================================="
    espace="                                                  "

    # Division de la valeur par 2 car il y a 50 caractères pour la barre
    progression_barre=$(( ${1} / 2 ))

    largeur_max=50

else
    # Utilisation de 25 caractères = ou espaces
    barre="========================="
    espace="                         "

    # Division de la valeur par 4 car il y a 25 caractères pour la barre
    progression_barre=$(( ${1} / 4 ))

    largeur_max=25
fi

# Affichage du pourcentage, de la barre contenant soit des espaces soit des =
if [[ "${progression_barre}" != "${largeur_max}" ]]
then
    echo -en "\r${VERT}${progression}%${RAZ} : ${FUCHSIA}[${BLEUFONCE}${barre::${progression_barre}}${FUCHSIA}>${espace:${progression_barre}}]${RAZ} ${2}                                    "
else
    echo -en "\r${VERT}${progression}%${RAZ} : ${FUCHSIA}[${BLEUFONCE}${barre::${progression_barre}}=${FUCHSIA}]${RAZ} ${2}                                    \n"
fi
}

superprogression 0 "Creation du mdp root"
sleep 2
superprogression 15 "Verification des maj"
sleep 2
superprogression 30 "Installation des maj"
#...

Dans un script, si rien d'autre n'est affiché, on verra la barre progresser.

Dernière modification par Hizoka (Le 30/11/2018, à 19:03)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#3 Le 30/11/2018, à 19:32

GammaDraconis

Re : [RESOLU] Script Installation

- pour les maj et l'install, utilise plutôt "apt" que "apt-get".

- Le paramètre "--yes" peut être raccourci en "-y".

- si tu veux faire toutes les maj, il faut faire un "apt full-upgrade"


Discussion sur mon script de post-install pour Ubuntu 20.04LTS : https://forum.ubuntu-fr.org/viewtopic.php?id=2026344
Lien direct script : https://github.com/simbd/Ubuntu_20.04LTS_PostInstall
Démo vidéo (peertube) : https://video.ploud.fr/videos/watch/fb7 … 0d252ed2db

Hors ligne

#4 Le 03/12/2018, à 09:44

Skratsh

Re : [RESOLU] Script Installation

Hizoka a écrit :

Salut,

tu crées une fonction qui affiche une barre et le texte, et tu l'appelles en lui passant le pourcentage et le texte à afficher.

Perso, j'ai ça :

function superprogression
{
# ${1} : Pourcentage à afficher sans le signe %
# ${2} : texte à afficher
unset progression progression_barre

FUCHSIA="\033[1;35m"
RAZ="\e[m"
BLEUFONCE="\033[1;34m"
VERT="\033[0;32m"
ROUGE="\033[1;31m"

# Verifie que le chiffre ne dépasse pas 100%
[[ ${1} != [0-9]* || ${1} -gt 100 ]] && return

# Ajoute un ou deux 0 si besoin à la variable progression
printf -v progression "%03d" "${1}"

# Si le pourcentage est pair on y soustrait 1
(( (${1} % 2) == 1 )) && progression_barre=$(( (${1} - 1) / 2 ))

if [[ $(tput cols) -gt 150 ]]
then
    # Utilisation de 50 caractères = ou espaces
    barre="===================================================================================================="
    espace="                                                                                                    "

    # Pas de division car la barre fait 100
    progression_barre=${1}

    largeur_max=100

elif [[ $(tput cols) -gt 100 ]]
then
    # Utilisation de 50 caractères = ou espaces
    barre="=================================================="
    espace="                                                  "

    # Division de la valeur par 2 car il y a 50 caractères pour la barre
    progression_barre=$(( ${1} / 2 ))

    largeur_max=50

else
    # Utilisation de 25 caractères = ou espaces
    barre="========================="
    espace="                         "

    # Division de la valeur par 4 car il y a 25 caractères pour la barre
    progression_barre=$(( ${1} / 4 ))

    largeur_max=25
fi

# Affichage du pourcentage, de la barre contenant soit des espaces soit des =
if [[ "${progression_barre}" != "${largeur_max}" ]]
then
    echo -en "\r${VERT}${progression}%${RAZ} : ${FUCHSIA}[${BLEUFONCE}${barre::${progression_barre}}${FUCHSIA}>${espace:${progression_barre}}]${RAZ} ${2}                                    "
else
    echo -en "\r${VERT}${progression}%${RAZ} : ${FUCHSIA}[${BLEUFONCE}${barre::${progression_barre}}=${FUCHSIA}]${RAZ} ${2}                                    \n"
fi
}

superprogression 0 "Creation du mdp root"
sleep 2
superprogression 15 "Verification des maj"
sleep 2
superprogression 30 "Installation des maj"
#...

Dans un script, si rien d'autre n'est affiché, on verra la barre progresser.

Et tu met où les commandes du coup ? tongue

Hors ligne

#5 Le 03/12/2018, à 13:05

Hizoka

Re : [RESOLU] Script Installation

Bah à la fin :

superprogression 0 "Creation du mdp root"
sleep 2
superprogression 15 "Verification des maj"
sleep 2
superprogression 30 "Installation des maj"
#...

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#6 Le 03/12/2018, à 15:07

Skratsh

Re : [RESOLU] Script Installation

Dans le genre ?

ls 
superprogression 0 "Creation du mdp root"
sleep 2
rm gnia gnia
superprogression 15 "Verification des maj"
sleep 2
touch gnia gnia
superprogression 30 "Installation des maj"
#...

Edit : J'ai aussi eu une erreur avec function superprogression que j'ai passé en superprogression () et aussi avec la ligne

# Si le pourcentage est pair on y soustrait 1
(( (${1} % 2) == 1 )) && progression_barre=$(( (${1} - 1) / 2 ))

qui donne l'erreur

Syntax error: word unexpected (expecting ")")

et là pour le coup je n'ai pas trouvé comment passer outre hmm

Edit2: Je doit être autiste je lançais avec sh .test.sh et pas bash .test.sh tout fonctionne superbement, merci à vous 2 !

Si ça peut interesser/aider qlq :

#!/bin/bash

sudo passwd root ;
clear ;
function superprogression 
{
# ${1} : Pourcentage à afficher sans le signe %
# ${2} : texte à afficher
unset progression progression_barre

FUCHSIA="\033[1;35m"
RAZ="\e[m"
BLEUFONCE="\033[1;34m"
VERT="\033[0;32m"
ROUGE="\033[1;31m"

# Verifie que le chiffre ne dépasse pas 100%
[[ ${1} != [0-9]* || ${1} -gt 100 ]] && return

# Ajoute un ou deux 0 si besoin à la variable progression
printf -v progression "%03d" "${1}"

# Si le pourcentage est pair on y soustrait 1
(( (${1} % 2) == 1 )) && progression_barre=$(( (${1} - 1) / 2 ))

if [[ $(tput cols) -gt 150 ]]
then
    # Utilisation de 50 caractères = ou espaces
    barre="===================================================================================================="
    espace="                                                                                                    "

    # Pas de division car la barre fait 100
    progression_barre=${1}

    largeur_max=100

elif [[ $(tput cols) -gt 100 ]]
then
    # Utilisation de 50 caractères = ou espaces
    barre="=================================================="
    espace="                                                  "

    # Division de la valeur par 2 car il y a 50 caractères pour la barre
    progression_barre=$(( ${1} / 2 ))

    largeur_max=50

else
    # Utilisation de 25 caractères = ou espaces
    barre="========================="
    espace="                         "

    # Division de la valeur par 4 car il y a 25 caractères pour la barre
    progression_barre=$(( ${1} / 4 ))

    largeur_max=25
fi

# Affichage du pourcentage, de la barre contenant soit des espaces soit des =
if [[ "${progression_barre}" != "${largeur_max}" ]]
then
    echo -en "\r${VERT}${progression}%${RAZ} : ${FUCHSIA}[${BLEUFONCE}${barre::${progression_barre}}${FUCHSIA}>${espace:${progression_barre}}]${RAZ} ${2}                                    "
else
    echo -en "\r${VERT}${progression}%${RAZ} : ${FUCHSIA}[${BLEUFONCE}${barre::${progression_barre}}=${FUCHSIA}]${RAZ} ${2}                                    \n"
fi
}

superprogression 0 "Debut de l'installation"
sleep 5
sudo apt update > /dev/null 2>&1
clear
superprogression 15 "Verification des maj"
sleep 5
sudo apt -y full-upgrade > /dev/null 2>&1
clear
superprogression 30 "Installation des maj"
sleep 5
sudo apt -y install vim puppet > /dev/null 2>&1
clear
superprogression 45 "Installation de vim et puppet"
sleep 5
yes "o" | ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa > /dev/null 2>&1
clear
superprogression 60 "Creation de la clef ssh"
sleep 5
/etc/init.d/ssh restart > /dev/null 2>&1
clear
superprogression 75 "Redemarrage du service ssh"
sleep 5
sudo sed -i 's/\(#PermitRootLogin prohibit-password\).*/\PermitRootLogin yes /' /etc/ssh/sshd_config > /dev/null 2>&1
clear
superprogression 90 "Autorisation des connexions ssh via root"
sleep 5
sudo apt -y install ubuntu-unity-desktop
clear
superprogression 100 "Installation Unity" ;
clear
echo "Fin de l'installation, reste a valider les certificats puppet, enlever la veille et le trousseau chrome et intégrer les infos de la machine dans le wiki et le drive."

Dernière modification par Skratsh (Le 03/12/2018, à 17:06)

Hors ligne