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 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