Je suis d'accord pour le maintien d'une version apt-get.
J'ai d'ailleurs pas mal travaillé sur une avancée pour le script:
La gestion multilingue
En deux mots: deux fichiers. Simple, ils se mettent dans le même répertoire.
Le fichier de langue: sudo gedit /emplacement/
Cleanlanguage (le nom du fichier langue est important!)
#!/bin/bash
# Script de maintenance Système
# Jean-Lux & Daniel Vergeylen
# Version 2.8
# Variables de langage:
# 1) Français
echec="Arret de la $appellation, soit par instruction de l'utilisateur, soit à cause d'une erreur inconnue"
succes="La $appellation s'est déroulée avec succès"
#Fenêtres zenity
#Introduction
intro_title='INFOS'
intro_text="Ce script se charge de mettre à jour votre système et de supprimer les fichiers/paquets inutiles, il est recommandé de l'exécuter au moins une fois par mois."
# Vérification des permissions root
admin_title="Accès refusé"
admin_text="Les droits d'administrateur n'ont pas été octroyés pour ce script. Veuillez le relancer avec les permissions root!"**
# Tableau des Options possibles
action_title="Sélectionner les opérations à effectuer"
action_text="Veuillez sélectionnez les opérations à effectuer :"
action_column01="À faire ?"
action_column02="Description"
# Variables possibles
action_majdepot="Mettre à jour les dépôts"
action_majlogiciel="Mettre à jour les paquets/logiciels installés"
action_dependance="Vérifier les dépendances"
action_autoremove="Supprimer complètement les paquets/logiciels inutiles"
action_purgecache="Supprimer TOUS les fichiers inutiles du cache d'APT"
action_peripherique="Mise à jour de l'index des périphériques"
action_corbeille="Vider la corbeille"
action_sysfichier="Vérifier le disque dur au prochain démarrage de l'ordinateur"
# Vérification connexion Internet
internet_text="Test de la connexion internet en cours..."
internet_title_error="Erreur : Pas de connexion Internet"
internet_text_error="Aucune connexion Internet n'a été détectée. Veuillez vérifier vos connexions. Ce script va maintenant s'interrompre."
# Mise à jour des dépôts
appellation_depot="Mise à jour des dépots"
# Mise à jour des logiciels
appellation_logiciel="Mettre à jour les paquets/logiciels installés"
# Vérification des dépendances
appellation_dependance="Vérification des dépendances des paquets"
# Suppression des paquets considérés comme INUTILES
appellation_autoremove="suppression complète des paquets inutiles"
# Suppression des fichiers inutiles dans le cache
appellation_purgecache="Suppression des fichiers inutiles du cache d'APT"
# Vidage de la Corbeille
appellation_corbeille="Vidage de la corbeille..."
# Mise à jour de l'index des périphériques
appellation_peripherique01="1ère phase de mise à jour de l'index des périphériques"
appellation_peripherique02="2ème phase de la mise à jour de l'index des périphériques"
# Vérification du disque:
verification_text="Vous avez planifié une vérification du système de fichier, cette vérification s'exécutera au prochain démarrage d'Ubuntu !" verification_title="Vérification du système de fichier"
# Tableau récapitulatif des opérations effectuées
conclu_title="Liste des résultats des opérations effectuées."
conclu_text="Résultats des Opérations demandées:\nCe script a été fait par Jean-Lux avec l'aide de Daniel Vergeylen, sous Licence GPL.\n"
conclu_column01="Résultats"
conclu_column02="Opérations"
Le script en lui même:
#!/bin/bash
# Script de maintenance Système
# Jean-Lux & Daniel Vergeylen
# Version 2.8
# Import du fichier de langue:
. Cleanlanguage
# Affectation des variables pour le diagnostique en post-script
majdepot="Non demandé"
majlogiciel="Non demandé"
dependance="Non demandé"
autoremove="Non demandé"
purgecache="Non demandé"
peripherique1="Non demandé"
peripherique2="Non demandé"
corbeille="Non demandé"
sysfichier="Non demandé"
#Fonction de vérification du succès des processus demandés.
# @Pre: Le PID du processus lancé
# @post: mise à jour de la variable de diagnostique, et message d'erreur si porblème rencontré
function check ()
{
# Si le processus est un échec:
if pidof $processus > /dev/null ; then
echo "$echec"
kill $PID
if [ "$varcheck" = "majdepot" ] ; then
majdepot="Échec "
elif [ "$varcheck" = "majlogiciel" ] ; then
majlogiciel="Échec "
elif [ "$varcheck" = "dependance" ] ; then
dependance="Échec "
elif [ "$varcheck" = "autoremove" ] ; then
autoremove="Échec "
elif [ "$varcheck" = "purgecache" ] ; then
purgecache="Échec "
elif [ "$varcheck" = "peripherique1" ] ; then
peripherique1="Échec "
elif [ "$varcheck" = "peripherique2" ] ; then
peripherique2="Échec "
else echo "pas de variable à mettre à jour"
fi
# Si le processus est un succès:
else
echo "$succes"
if [ "$varcheck" = "majdepot" ] ; then
majdepot=Succès
elif [ "$varcheck" = "majlogiciel" ] ; then
majlogiciel=Succès
elif [ "$varcheck" = "dependance" ] ; then
dependance=Succès
elif [ "$varcheck" = "autoremove" ] ; then
autoremove=Succès
elif [ "$varcheck" = "purgecache" ] ; then
purgecache=Succès
elif [ "$varcheck" = "peripherique1" ] ; then
peripherique1=Succès
elif [ "$varcheck" = "peripherique2" ] ; then
peripherique2=Succès
else echo "pas de variable à mettre à jour"
fi
fi
}
#Fonction de lancement des processus. Ceci ne fait que lancer l'instruction souhaitée.
#Grace à l'appel sous cette forme, si l'utilisateur appuie sur "Annuler", le processus peut être tué immédiatement
# @Pre: Le nom d'un processus à lancer, avec ses options
# @post: Le processus est lancé.
function lance_p ()
{
nom_process=$1
shift
$nom_process $* &
while pidof $nom_process > /dev/null
do
echo .
done
}
## INTRODUCTION
zenity --info --title="$intro_title" --text="$intro_text"
## Verification des permissions root
if [ "$USER" != "root" ] ; then
zenity --error --text="$admin_text" --title="$admin_title"
exit
fi
## Affichage de la liste des actions
ACT=$(zenity --list --checklist --width 495 --height 316 \
--title "$action_title" \
--text "$action_text" \
--column "$action_column01" --column "$action_column01" \
TRUE "$action_majdepot" \
TRUE "$action_majlogiciel" \
TRUE "$action_autoremove" \
TRUE "$action_purgecache" \
TRUE "$action_corbeille" \
FALSE "$action_peripherique" \
FALSE "$action_dependance" \
FALSE "$action_sysfichier" );
if [ "${PIPESTATUS[0]}" != "0" ]; then
exit
fi
## Vérification de la connexion Internet
case "$ACT" in
"$action_majdepot" | "$action_majlogiciel" | "$action_peripherique" )
ping google.fr -c 3 | zenity --progress --text="$internet_text" --pulsate --auto-close
if [ "${PIPESTATUS[0]}" != "0" ]; then
zenity --error --title="$internet_title_error" --text="$internet_text_error"
exit
fi;;
esac
## Exécution des opérations demandées
# Mise a jour des dépôts
echo "$ACT" | grep "$action_majdepot" >/dev/null
if [ "$?" = 0 ] ; then
appellation="$appellation_depot"
lance_p apt-get update | zenity --progress --text="$appellation" --pulsate --auto-close
PID=$(pidof apt-get)
processus="apt-get"
varcheck=majdepot
check
fi
# Mise à jour des logiciels
echo "$ACT" | grep "$action_majlogiciel" >/dev/null
if [ "$?" = 0 ] ; then
appellation="$appellation_majlogiciel"
lance_p apt-get dselect-upgrade -y --force-yes | zenity --progress --text="$appellation" --pulsate --auto-close
PID=$(pidof apt-get)
processus="apt-get"
varcheck=majlogiciel
check
fi
# Vérification des dépendances
echo "$ACT" | grep "$action_dependance" >/dev/null
if [ "$?" = 0 ] ; then
appellation="$appellation_dependance"
lance_p apt-get check -y --force-yes | zenity --progress --text="$appellation" --pulsate --auto-close
PID=$(pidof apt-get)
processus="apt-get"
varcheck=dependance
check
fi
# Suppression des paquets considérés comme INUTILES
echo "$ACT" | grep "$action_autoremove" >/dev/null
if [ "$?" = 0 ] ; then
appellation="$appellation_autoremove"
lance_p apt-get autoremove --purge -y --force-yes| zenity --progress --text="$appellation" --pulsate --auto-close
PID=$(pidof apt-get)
processus="apt-get"
varcheck=autoremove
check
fi
# Suppression des fichiers inutiles dans le cache
echo "$ACT" | grep "$action_purgecache" >/dev/null
if [ "$?" = 0 ] ; then
appellation="$appellation_purgecache"
lance_p apt-get clean | zenity --progress --text="$appellation" --pulsate --auto-close
PID=$(pidof apt-get)
processus="apt-get"
varcheck=purgecache
check
fi
# Vidage de la Corbeille
echo "$ACT" | grep "$action_corbeille" >/dev/null
if [ "$?" = 0 ] ; then
rm -r $HOME/.Trash | zenity --progress --text="$appellation_corbeille" --pulsate --auto-close
if [ "${PIPESTATUS[0]}" != "0" ]; then
corbeille=Echec
else
corbeille=Succès
fi
fi
# Mise à jour de l'index des périphériques
echo "$ACT" | grep "$action_peripherique" >/dev/null
if [ "$?" = 0 ] ; then
appellation="$appellation_peripherique01"
lance_p update-pciids 2>&1 | sed -u 's/.*\ \([0-9]\+%\)\ \+\([0-9.]\+\ [KMB\/s]\+\)$/\1\n# Vitesse du téléchargement = \2/' | zenity --progress --text="$appellation" --auto-close
PID=$(pidof update-pciids)
processus="update-pciids"
varcheck=peripherique1
check
fi
# Mise à jour de l'index des périphériques (suite)
echo "$ACT" | grep "$action_peripherique">/dev/null
if [ "$?" = 0 ] ; then
appellation="$appellation_peripherique02"
lance_p update-usbids 2>&1 | sed -u 's/.*\ \([0-9]\+%\)\ \+\([0-9.]\+\ [KMB\/s]\+\)$/\1\n# Vitesse du téléchargement = \2/' | zenity --progress --text="$appellation" --auto-close
PID=$(update-usbids)
processus="update-usbids"
varcheck=peripherique2
check
fi
# Vérification du système de fichier
echo "$ACT" | grep "$action_sysfichier">/dev/null
if [ "$?" = 0 ] ; then
cd /
touch /forcefsck
if [ "${PIPESTATUS[0]}" != "0" ]; then
sysfichier="Non Programmé"
else
sysfichier="Programmé"
fi
zenity --info --title="$verification_title" --text="$verification_text"
fi
## FIN
## Affichage d'un tableau récapitulatif reprenant toutes les actions possibles.
#@post: les actions non demandées par l'utilisateur sont affichées avec une étiquette "Non demandé"
# Les actions demandées et achevées avec succès sont affichées avec une étiquette "Succès"
# Les actions demandées et non achevées (par annulation ou par erreur) sont affichées avec une étiiquette "Echec"
zenity --list --width 512 --height 405 --title "$conclu_title" --text="$conclu_text"\
--column="$conclu_column01" --column="$conclu_column02" \
"$majdepot" "$action_majdepot" \
"$majlogiciel" "$action_majlogiciel" \
"$autoremove" "$action_autoremove" \
"$purgecache" "$action_purgecache" \
"$corbeille" "$action_corbeille" \
"$peripherique1" "$action_peripherique 1ère partie" \
"$peripherique2" "$action_peripherique 2ème partie" \
"$dependance" "$action_dependance" \
"$sysfichier" "$action_sysfichier"
Voilà voilà!
Merci Beaucoup à ceux qui testent et font des rapports, cela aide vraiment (même si c'est pour dire que tout marche!!! 😛).
Daniel V.
P.S: Le support des nouvelles fonctionnalités du script en multilingue sont en cours, on y travaille!
P.S: Ceux qui voudraient traduire le fichier de langue (vous l'éditez et me le renvoyer dans la langue traduite), vous pouvez m'envoyer un mail à daniel_vergeylen@NOSPAMyahoo point fr Merci beaucoup!