Maintenance du système


Maintenance du système avec bash


 

 

 

Afin de mieux connaître son système d’exploitation, la création d’un journal des installations permet de suivre l’occupation de son disque dur, comprendre l’origine des fichiers qui s’approprient la place sur le disque.

 

On peut de cette façon effectuer des désinstallations manuelles en effaçant exclusivement les fichiers dont on connaît la source et la destination.

Le logiciel d’installation/désinstallation (Software Manager) fait cela très bien, mais ne laisse pas d’alternative entre une installation ou une désinstallation complète, il laisse aussi quelquefois des traces qu’on détecte difficilement étant donné la densité des fichiers dans ces répertoires.

La création de ce journal permet aussi de rester le décisionnaire sur le suivi de son système, on accède aussi de cette manière à l’orthographe du nom de l’exécutable du logiciel installé, du chemin complet des répertoires contenant les fichiers de configuration et d’initialisation, des fichiers d’icônes etc...

On reste de ce fait l’administrateur de son système.


https://static.blog4ever.com/2011/12/578743/artfichier_578743_746511_201204092312286.png


C’est un script bash très simple avec une interface graphique réalisée avec zenity.

- l’examen initial :
      Explore le disque dur et créé une liste de l’ensemble des fichiers



Il faut ensuite procéder à l’installation du programme et modifier ainsi le système.

- l’examen de contrôle :
      Explore à nouveau le disque dur et créé une nouvelle liste.



- ajout dans le journal :
     Procède à une comparaison des deux listes et extrait les fichiers ajoutés avec leur chemin, la liste des ajouts sera affichée à l’écran et ajoutée au fichier journal.

Dans le script les fichiers sont lus/écrits dans le répertoire dont le chemin absolu est ~/.zen/, c’est le répertoire de travail des différentes listes et du journal, il est possible de le personnaliser en modifiant tous les chemins ~/.zen/ avec le nom d’un autre répertoire.


Le journal ne contient pas les données inscrites dans le dossier personnel, il s’agit le plus souvent de fichiers de configurations et bien sûr des fichiers d’exploitation résultant du travail accompli avec le logiciel.

 

#!/bin/bash

# --------------------------------
# fonction scan initial du système
# --------------------------------
scaninit() {
find /usr > ~/.zen/examen1
find /etc >> ~/.zen/examen1
}

# ------------------------------------
# fonction scan de contrôle du système
# ------------------------------------
scancontr() {
find /usr > ~/.zen/examen2
find /etc >> ~/.zen/examen2
}

# --------------------------------------
# fonction de sauvegarde dans le journal
# --------------------------------------
fjournal() {
titre=$(zenity --entry --title "Entrée d'un titre pour le journal"
--text "Saisir un titre pour annoter le paragraphe dans le journal")
echo >~/.zen/tamp
echo >>~/.zen/tamp
echo ---------------------------------------------------------- >>~/.zen/tamp
echo "nouvelle entrée en date du : " >>~/.zen/tamp
date >>~/.zen/tamp
echo $titre >>~/.zen/tamp
echo ---------------------------------------------------------- >>~/.zen/tamp
echo >>~/.zen/tamp
diff --old-line-format='' --new-line-format='%l
' --unchanged-line-format='' ~/.zen/examen1 ~/.zen/examen2 >>~/.zen/tamp
zenity --text-info --width=500 --height=400 --title "liste des ajouts" --filename ~/.zen/tamp
cat ~/.zen/tamp >>~/.zen/journal
}


# ------------------------------------
# fonction de visualisation du journal
# ------------------------------------

vjournal() {
zenity --text-info --width=500 --height=400 --title "Visualisation du journal" --filename ~/.zen/journal
}

# -----------------
# Boucle principale
# -----------------
while true ;
do
code=$(zenity --list --column=code --column=designation --title="Examen des installations"
--width=500 --height=350 --hide-header --hide-column=1
--text=" lors de l'examen initial et de contrôle
=================================
PATIENTER JUSQU'A LA REAPPARITION DE LA FENETRE
=================================
- le scan peut durer quelques minutes -"
1 "Examen initial"
2 "Examen de contrôle"
3 "Ajouter les fichiers dans le journal"
4 "Visualiser le journal"
5 "Quitter" )

case $code in
1) scaninit ;;
2) scancontr ;;
3) fjournal ;;
4) vjournal ;;
5) break ;;
esac

done 

 

 Extrait du résulat de l'enregistrement de l'installation du logiciel "scribus" dans le journal

 


----------------------------------------------------------
nouvelle entrée en date du :
mardi 10 avril 2012, 12:36:48 (UTC+0200)
installation de scribus
----------------------------------------------------------

/usr/share/mime/packages/scribus.xml
/usr/share/mime/application/vnd.scribus.xml
/usr/share/applications/scribus.desktop
/usr/share/man/man1/scribus.1.gz
/usr/share/man/de/man1/scribus.1.gz
/usr/share/man/pl/man1/scribus.1.gz
/usr/share/lintian/overrides/scribus
/usr/share/doc/scribus
/usr/share/doc/scribus/README.gz
/usr/share/doc/scribus/NEWS.Debian.gz
/usr/share/doc/scribus/changelog.Debian.gz
/usr/share/doc/scribus/README.Debian.gz
/usr/share/doc/scribus/AUTHORS
/usr/share/doc/scribus/ChangeLogScripts.gz
/usr/share/doc/scribus/TODO
/usr/share/doc/scribus/copyright
/usr/share/menu/scribus
/usr/share/pixmaps/scribus.png
/usr/share/pixmaps/scribus.xpm
/usr/share/scribus
/usr/share/scribus/translations
/usr/share/scribus/translations/scribus.af.qm
/usr/share/scribus/translations/scribus.sr.qm
/usr/share/scribus/translations/scribus.ar.qm
/usr/share/scribus/translations/scribus.nl.qm
    ////                     

             /////////

                            ////

/usr/lib/scribus/plugins/libbarcodegenerator.so
/usr/lib/scribus/import.prolog
/usr/lib/scribus/keysets
/usr/lib/scribus/keysets/scribus13.ksxml 


La même version avec interface texte dans un terminal

 

 https://static.blog4ever.com/2011/12/578743/artfichier_578743_753415_201204110913555.png

 


#!/bin/bash

# --------------------------------
# fonction scan initial du système
# --------------------------------
scaninit() {
find /usr > ~/.zen/examen1
find /etc >> ~/.zen/examen1
}

# ------------------------------------
# fonction scan de contrôle du système
# ------------------------------------
scancontr() {
find /usr > ~/.zen/examen2
find /etc >> ~/.zen/examen2
}

# --------------------------------------
# fonction de sauvegarde dans le journal
# --------------------------------------

fjournal() {
clear
echo
echo "---------------------------------------------------------------"
echo "saisie d'un titre pour annotation dans le paragraphe du journal"
echo "---------------------------------------------------------------"
echo
read titre
echo >~/.zen/tamp
echo >>~/.zen/tamp
echo ---------------------------------------------------------- >>~/.zen/tamp
echo "nouvelle entrée en date du : " >>~/.zen/tamp
date >>~/.zen/tamp
echo $titre >>~/.zen/tamp
echo ---------------------------------------------------------- >>~/.zen/tamp
echo >>~/.zen/tamp
diff --old-line-format='' --new-line-format='%l
' --unchanged-line-format='' ~/.zen/examen1 ~/.zen/examen2 >>~/.zen/tamp
more ~/.zen/tamp
cat ~/.zen/tamp >>~/.zen/journal
}


# ------------------------------------
# fonction de visualisation du journal
# ------------------------------------

vjournal() {
clear
echo
echo
echo "=============================================="
echo "espace pour parcourir une page, Q pour quitter"
echo "=============================================="
read a
more ~/.zen/journal
}

# -----------------
# Boucle principale
# -----------------

while true ;
do
clear
echo
echo "lors de l'examen initial et de contrôle"
echo "==============================================="
echo "PATIENTER JUSQU'A LA REAPPARITION DE LA FENETRE"
echo "==============================================="
echo "Le scan peut durer quelques minutes"
echo
echo
echo "***************************"
echo "###### M E N U ######"
echo "***************************"
echo "1 - Examen initial"
echo "2 - Examen de contrôle"
echo "3 - Ajouter les fichiers dans le journal"
echo "4 - Visualiser le journal"
echo "5 - Quitter"
read choix
case $choix in
1) scaninit;;
2) scancontr;;
3) fjournal;;
4) vjournal;;
5) break
esac
done
 

 


Suppression totale d’une installation en mode manuel

Pour supprimer une série de fichiers facilement avec un ordre bash, il faut créer un nouveau fichier texte et y transcrire la liste des fichiers à supprimer d’un simple copier/coller du journal vers le fichier.


Dans une console envoyer l’ordre :

sudo rm $(cat fichier.txt)

La suppression est immédiate après la saisie du mot de passe administrateur, sans aucune confirmation.

Simple et efficace.



 


09/04/2012
0 Poster un commentaire

Ces blogs de Informatique & Internet pourraient vous intéresser