Pages : 1
#1 Le 07/05/2014, à 14:56
- jplemoine
binaires hors paquet
Après le script "paquet hors depot", voici le "binaires hors paquet".
Il s'agit de détecter les binaires qui ne sont pas dans un paquet et qui ont été installés manuellement.
Voici le script :
#! /bin/bash
# version 2
# --- debut parametrage ---
fic_temp1="/tmp/liste_fichiers_paquet.txt"
fic_temp2="/tmp/fichier.txt"
modulo=5
col1=-10
col2=-30
indesirables="pod2latex.bundled,update-icon-caches.gtk2"
# --- fin parametrage ---
# ------------------------ declaration fonctions -------------------------------
function trouve
{
resultat=""
#on crée un fichier temporiare bis
cat $fic_temp1 | grep "^$1" | sort -u > $fic_temp2
for file in $(ls --file-type "$1" | grep -v @)
do
trouve=false
# il y a un [ --> pourquoi ? bug ? on le filtre
if [ "$file" != "[" ];then
trouve=$(cat $fic_temp2 | grep $1/$file)
# on filtre les "indesirables"
if [ $(echo "$indesirables" | grep $file) ]; then
trouve="dummy"
fi
# si non, trouvé, on stocke
if [ "1${trouve}" = "1" ]; then
if [ "1${resultat}" = "1" ]; then
resultat=$(echo "$file")
else
resultat=$(echo "$resultat,$file")
fi
fi
fi
done
echo "$resultat"
}
function affiche_resultat
{
p1=$(printf "%*s" $3 $1)
#echo "$1 $2 $3 $4"
#if [ "1${2}" = "1" ]; then
# t1="---"
#else
# t1=$2
#fi
t1=$(printf "%*s" $4 $2)
echo "| $p1 | $t1 |"
}
function affiche_intercalaire
{
echo "| | |"
echo "|------------|--------------------------------|"
echo "| | |"
}
function affiche_entete
{
echo "|------------|--------------------------------|"
echo "| | |"
echo "| chemin | binaire |"
echo "| | |"
echo "|------------|--------------------------------|"
echo "| | |"
}
function affiche_pied_de_page
{
echo "| | |"
echo "|------------|--------------------------------|"
}
# ------------------------ fin declaration fonctions -------------------------------
# liste les fichiers
car=""
clear
while [ "$car" != "o" ] && [ "$car" != "O" ] && [ "$car" != "n" ] && [ "$car" != "N" ]
do
echo -n "regeneration fichier temporaire (o/n) ?"
read car
done
if [ $car = 'o' ] || [ $car = 'O' ]; then
if [ -f $fic_temp1 ]; then
rm $fic_temp1
fi
# calcul du nombre de paquets
total=0
liste=$(dpkg --get-selections | awk '{print $1}')
for line in $(echo "$liste")
do
((total++))
done
save=0
nb=0
echo -n "0%"
liste=$(dpkg --get-selections | awk '{print $1}')
for line in $(echo "$liste")
do
dpkg -L $line >> $fic_temp1
((nb++))
# calcul du pourcentage
pcnt=$(echo "scale=0; $nb*100/$total" | bc)
mod=$(echo "scale=0; $pcnt % $modulo" | bc)
# Si le poucentage a changé et s'il est multiple du modulo,
# on l'affiche
if [ $pcnt != $save ]; then
if [ $mod = 0 ]; then
echo -n "${pcnt}%"
else
echo -n "."
fi
save=$pcnt
fi
done
echo " "
echo -n "appuyer sur entrée pour continuer"
read dummy
echo " "
fi
# si le fichier n'existe pas ou est vide, on stoppe.
arret="N"
if [ "1$(ls $fic_temp1 2>/dev/null)" == "1" ]; then
# le fichier n'existe pas, arret
arret="O"
else
# s'il est vide, arret
taille=$(ls -l $fic_temp1 | awk '{print $5}')
if [ "$taille" -lt "10" ]; then
arret="O"
fi
fi
if [ "$arret" = "O" ]; then
echo "le fichier '$fic_temp1' est manquant ou vide. arret du traitement"
read dummy
exit
fi
# calcul des binaires
clear
p1="/bin"
echo " - $p1 -"
t1=$(trouve $p1)
p2="/sbin"
echo " - $p2 -"
t2=$(trouve $p2)
p3="/usr/bin"
echo " - $p3 -"
t3=$(trouve $p3)
p4="/usr/sbin"
echo " - $p4 -"
t4=$(trouve $p4)
# mise en forme des resultats
if [ "1${t1}" = "1" ]; then
t1="---"
fi
if [ "1${t2}" = "1" ]; then
t2="---"
fi
if [ "1${t3}" = "1" ]; then
t3="---"
fi
if [ "1${t4}" = "1" ]; then
t4="---"
fi
# Affichage tableaux
echo "$(affiche_entete)"
echo "$(affiche_resultat $p1 $t1 $col1 $col2)"
echo "$(affiche_intercalaire)"
echo "$(affiche_resultat $p2 $t2 $col1 $col2)"
echo "$(affiche_intercalaire)"
echo "$(affiche_resultat $p3 $t3 $col1 $col2)"
echo "$(affiche_intercalaire)"
echo "$(affiche_resultat $p4 $t4 $col1 $col2)"
echo "$(affiche_pied_de_page)"
Mettre le contenu dans un fichier et donner à ce dernier les droits d’exécution.
Je ne sais pas pourquoi, il y a des binaires qui sont détectés alors qu'il ne devrait pas : il faut les mettre dans la variable "indesirables"
en tête de script.
Dernière modification par jplemoine (Le 07/05/2014, à 14:57)
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Hors ligne
#2 Le 07/05/2014, à 15:09
- jplemoine
Re : binaires hors paquet
A la question sur le regeneration, il faut faire o la première fois. Ensuite, on peut faire n si on a rien installé.
Cela permet de raccourcir le temps de trraitement.
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Hors ligne
Pages : 1