logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
utilisateurs:tawal:scripts:apt-history-research [12/03/2023 22:38]
Tawal [Outil de recherche dans l'historique d'APT]
utilisateurs:tawal:scripts:apt-history-research [08/06/2023 22:38]
Tawal [Outil de recherche dans l'historique d'apt]
Ligne 1: Ligne 1:
 ====== Outil de recherche dans l'​historique d'apt ====== ====== Outil de recherche dans l'​historique d'apt ======
 +<​note>​\\
 +Mise à jour le : 08/​06/​2023</​note><​note important>​\\
 +Non fonctionnel avant cette date !</​note>​
 +
  
   * Outil de recherche dans l'​historique d'apt.   * Outil de recherche dans l'​historique d'apt.
 +       * Recherche par motif de nom de paquet
 +       * Recherche par la date
 +       * Recherche par la commande d'​appel d'//​apt//​
 +       * Recherche par le type d'​action d'//​apt//​
 +       * Recherche possible dans les fichiers de logs archivés
 +       * Affichage humainement lisible
 +  * Script directement fonctionnel (pas de modification nécessaire).
  
-  * Nécessite //gawk// : ''​apt install gawk''​+<note important>​Nécessite //gawk// et //zcat// : <code root>apt install gawk gzip</​code></​note>​
  
 ===== L'aide ===== ===== L'aide =====
-<​code>​Apt History Research - ahr+<​code>​Apt History Research - ahr - 2023-06-08-22:​05
 Usage : Usage :
    ​ahr ​   [-a | -z N] [--apt [-0]] [-c COMMAND] [-d DATE]  [-t TYPE]  MOTIF    ​ahr ​   [-a | -z N] [--apt [-0]] [-c COMMAND] [-d DATE]  [-t TYPE]  MOTIF
Ligne 51: Ligne 62:
                                                                        ​Tawal®©</​code>​                                                                        ​Tawal®©</​code>​
 ===== Le script ===== ===== Le script =====
-(mis à jour le 10/03/2023 21:22)+(mis à jour le 08/06/2023 22:05non fonctionnel avant cette date !
 <file bash ahr>#​!/​bin/​bash <file bash ahr>#​!/​bin/​bash
  
Ligne 60: Ligne 71:
 # Nécessite : gawk (apt install gawk) # Nécessite : gawk (apt install gawk)
 # #
-version=2023-03-10 +version=2023-06-08-22:05
 ### Répertoire des logs d'apt (personnalisable) ### Répertoire des logs d'apt (personnalisable)
 apt_folder="/​var/​log/​apt"​ apt_folder="/​var/​log/​apt"​
Ligne 78: Ligne 88:
  
 ### Fonctions ### Fonctions
-usage()+usage_quit()
 { {
-    echo -e "Apt History Research - ahr+    echo -e "Apt History Research - ahr -  $version
 Usage : Usage :
    ​${Surb}${0##​*/​} ​   [-a | -z N] [--apt [-0]] [-c COMMAND] [-d DATE]  [-t TYPE]  MOTIF${Rst}    ​${Surb}${0##​*/​} ​   [-a | -z N] [--apt [-0]] [-c COMMAND] [-d DATE]  [-t TYPE]  MOTIF${Rst}
Ligne 128: Ligne 138:
 } }
  
-version()+version_quit()
 { {
     echo "​$version"​     echo "​$version"​
Ligne 134: Ligne 144:
 } }
  
-erreur()+erreur_quit()
 { {
     echo -n "​${0##​*/​} : "     echo -n "​${0##​*/​} : "
-    [ "​$1"​ = "​log"​ ]    && echo -e "Le fichier '​$apt_folder/​history.log'​ n'​existe pas."​ +    [ "​$1"​ = "​log"​ ]      && echo -e "Le fichier '​$apt_folder/​history.log'​ n'​existe pas."​ 
-    [ "​$1"​ = "​zip"​ ]    && echo -e "Le fichier '​$apt_folder/​history.log.$2.gz'​ n'​existe pas."​ +    [ "​$1"​ = "​zip"​ ]      && echo -e "Le fichier '​$apt_folder/​history.log.$2.gz'​ n'​existe pas."​ 
-    [ "​$1"​ = "​opt"​ ]    && echo -e "​Option ${Surb}'​$2'​${Rst} non-reconnue."​ +    [ "​$1"​ = "​opt"​ ]      && echo -e "​Option ${Surb}'​$2'​${Rst} non-reconnue."​ 
-    [ "​$1"​ = "​opt0"​ ]   ​&& echo -e "​Option '​${Surb}-0${Rst}'​ utilisée sans '​${Surb}--apt${Rst}'​."​ +    [ "​$1"​ = "​opt0"​ ]     ​&& echo -e "​Option '​${Surb}-0${Rst}'​ utilisée sans '​${Surb}--apt${Rst}'​."​ 
-    [ "​$1"​ = "​motif"​ ]  && echo -e "Motif absent ou pas d'​utilisation d'une des options '​${Surb}-c${Rst}'​ ou '​${Surb}-d${Rst}'​ ou '​${Surb}-t${Rst}'​."​ +    [ "​$1"​ = "​motif"​ ]    && echo -e "Motif absent ou pas d'​utilisation d'une des options '​${Surb}-c${Rst}'​ ou '​${Surb}-d${Rst}'​ ou '​${Surb}-t${Rst}'​."​ 
-    [ "​$1"​ = "​opt_az"​ ] && echo -e "​Options '​${Surb}-a${Rst}'​ et '​${Surb}-z${Rst}'​ incompatibles."​ +    [ "​$1"​ = "​opt_az"​ ]   ​&& echo -e "​Options '​${Surb}-a${Rst}'​ et '​${Surb}-z${Rst}'​ incompatibles."​ 
-    [ "​$1"​ = "​opt_z"​ ]  && echo -e "​L'​argument de l'​option ${Surb}'​-z'​${Rst} doit être un nombre."​ +    [ "​$1"​ = "​opt_z"​ ]    && echo -e "​L'​argument de l'​option ${Surb}'​-z'​${Rst} doit être un nombre."​ 
-    [ "​$1"​ = "​opt_t"​ ]  && echo -e "​L'​option ${Surb}-t${Rst} ne prend que les mots ${Surb}Install${Rst},​ ${Surb}Reinstall${Rst},​ ${Surb}Upgrade${Rst},​ ${Surb}Remove${Rst} et ${Surb}Purge${Rst}."​ +    [ "​$1"​ = "​opt_t"​ ]    && echo -e "​L'​option ${Surb}-t${Rst} ne prend que les mots ${Surb}Install${Rst},​ ${Surb}Reinstall${Rst},​ ${Surb}Upgrade${Rst},​ ${Surb}Remove${Rst} et ${Surb}Purge${Rst}."​ 
-    [ "​$1"​ = "​opt_d"​ ]  && echo -e "Date incorrecte : ${*:​2}"​+    [ "​$1"​ = "​opt_d"​ ]    && echo -e "Date incorrecte : ${*:​2}"​ 
 +    [[ $1 =~ gawk|zcat ]] && echo -e "​Nécessite ${Ital}${BASH_REMATCH[0]}${Rst} : apt install ${BASH_REMATCH[0]}"​ 
 +    ​
     exit 1     exit 1
 } >&2 } >&2
Ligne 194: Ligne 206:
     case $option in     case $option in
         a) opt_a="​on"​         a) opt_a="​on"​
-           [ "​$opt_z"​ ] && ​erreur ​opt_az+           [ "​$opt_z"​ ] && ​erreur_quit ​opt_az
            ​dezip_type="​all"​            ​dezip_type="​all"​
            ;;            ;;
Ligne 200: Ligne 212:
            ;;            ;;
         d) opt_d="​$OPTARG"​         d) opt_d="​$OPTARG"​
-           ​test_opt opt_d "​$opt_d"​ || erreur ​opt_d "​$opt_d"​+           ​test_opt opt_d "​$opt_d"​ || erreur_quit ​opt_d "​$opt_d"​
            ;;            ;;
         z) opt_z="​on"​         z) opt_z="​on"​
            [ "​$opt_a"​ ] && erreur opt_az            [ "​$opt_a"​ ] && erreur opt_az
-           ​test_opt opt_z "​$OPTARG"​ || erreur ​opt_z+           ​test_opt opt_z "​$OPTARG"​ || erreur_quit ​opt_z
            ​dezip_type="​one"​            ​dezip_type="​one"​
            ​dezip_nb="​$OPTARG"​            ​dezip_nb="​$OPTARG"​
            ;;            ;;
-        h) usage+        h) usage_quit
            ;;            ;;
         t) opt_t="​$OPTARG"​         t) opt_t="​$OPTARG"​
-           ​test_opt opt_t "​$opt_t"​ || erreur ​opt_t+           ​test_opt opt_t "​$opt_t"​ || erreur_quit ​opt_t
            ;;            ;;
-        v) version+        v) version_quit
            ;;            ;;
         0) opt_null="​on"​         0) opt_null="​on"​
Ligne 219: Ligne 231:
         -) case $OPTARG in         -) case $OPTARG in
                  all) opt_a="​on"​                  all) opt_a="​on"​
-                      [ "​$opt_z"​ ] && ​erreur ​opt_az+                      [ "​$opt_z"​ ] && ​erreur_quit ​opt_az
                       dezip_type="​all"​                       dezip_type="​all"​
                       ;;                       ;;
Ligne 228: Ligne 240:
                       ;;                       ;;
                 date) opt_d="​${!OPTIND}"​                 date) opt_d="​${!OPTIND}"​
-                      test_opt opt_d "​$opt_d"​ || erreur ​opt_d+                      test_opt opt_d "​$opt_d"​ || erreur_quit ​opt_d
                       OPTIND=$((OPTIND+1))                       OPTIND=$((OPTIND+1))
                       ;;                       ;;
Ligne 234: Ligne 246:
                       opt_z="​on"​                       opt_z="​on"​
                       [ "​$opt_a"​ ] && erreur opt_az                       [ "​$opt_a"​ ] && erreur opt_az
-                      test_opt opt_z ${!OPTIND} || erreur ​opt_z+                      test_opt opt_z ${!OPTIND} || erreur_quit ​opt_z
                       dezip_type="​one"​                       dezip_type="​one"​
                       dezip_nb=${!OPTIND}                       dezip_nb=${!OPTIND}
                       OPTIND=$((OPTIND+1))                       OPTIND=$((OPTIND+1))
                       ;;                       ;;
-                help) usage+                help) usage_quit
                       ;;                       ;;
                 type) opt_t=${!OPTIND}                 type) opt_t=${!OPTIND}
-                      test_opt opt_t "​$opt_t"​ || erreur ​opt_t+                      test_opt opt_t "​$opt_t"​ || erreur_quit ​opt_t
                       OPTIND=$((OPTIND+1))                       OPTIND=$((OPTIND+1))
                       ;;                       ;;
-             ​version) ​version+             ​version) ​version_quit
                       ;;                       ;;
-                   ​*) ​erreur ​opt --"​$OPTARG"​+                   ​*) ​erreur_quit ​opt --"​$OPTARG"​
                       ;;                       ;;
            esac            esac
            ;;            ;;
-        *) erreur ​opt -"​$OPTARG"​+        *) erreur_quit ​opt -"​$OPTARG"​
            ;;            ;;
     esac     esac
 done done
 shift $((OPTIND-1)) shift $((OPTIND-1))
 +
 +if ! hash gawk 2>/​dev/​null
 +then
 +    erreur_quit gawk
 +fi
 +
 +if ! hash zcat 2>​dev/​null
 +then
 +    erreur_quit zcat
 +fi
  
 if [ "​$1"​ ] if [ "​$1"​ ]
Ligne 262: Ligne 284:
 elif [ ! "​$opt_c"​ ] && [ ! "​$opt_d"​ ] && [ ! "​$opt_t"​ ] elif [ ! "​$opt_c"​ ] && [ ! "​$opt_d"​ ] && [ ! "​$opt_t"​ ]
 then then
-    ​erreur ​motif+    ​erreur_quit ​motif
 fi fi
  
 if [ "​$opt_null"​ ] && [ ! "​$opt_apt"​ ] if [ "​$opt_null"​ ] && [ ! "​$opt_apt"​ ]
 then then
-    ​erreur ​opt0+    ​erreur_quit ​opt0
 fi fi
  
Ligne 280: Ligne 302:
             zap="​on"​             zap="​on"​
         else         else
-            ​erreur ​log+            ​erreur_quit ​log
         fi         fi
     fi     fi
Ligne 289: Ligne 311:
 # shellcheck disable=SC1004 # shellcheck disable=SC1004
 gawk -vrech="​$rech"​ -vopt_c="​$opt_c"​ -vopt_d="​$opt_d"​ -vopt_t="​$opt_t" ​ -vapt="​$opt_apt"​ -vnull="​$opt_null"​ ' gawk -vrech="​$rech"​ -vopt_c="​$opt_c"​ -vopt_d="​$opt_d"​ -vopt_t="​$opt_t" ​ -vapt="​$opt_apt"​ -vnull="​$opt_null"​ '
 +    function afficher(verb,​ zero, mess, Array, ArrayTmp, tmp,    k,n) {
 +        if (0 in Array) {
 +            if (!verb && mess) {print mess}
 +            for (n in Array) {
 +                if (tmp && Array[n] ~ /,/) {
 +                    ArrayTmp[k++]=Array[n]
 +                    continue
 +                }
 +                if (!verb) {printf("​\t"​)}
 +                printf(Array[n])
 +                if (zero) {printf("​\0"​)}else{printf("​\n"​)}
 +            }
 +        }
 +    }
     BEGIN {     BEGIN {
         PROCINFO["​sorted_in"​]="​@val_str_asc"​         PROCINFO["​sorted_in"​]="​@val_str_asc"​
Ligne 369: Ligne 405:
                 if (demand) {print "​Demandeur ​  : ​ "​demand}                 if (demand) {print "​Demandeur ​  : ​ "​demand}
             }             }
-            if (0 in I) { + 
-                ​if ​(!apt) {print ​"​Installés :"+            ​afficher(apt, null, "​Installés :"I, Itmp"on") 
-                for (w in I) { +            ​afficher(apt, null, ""​Itmp) 
-                    if (I[w] ~ /,/) { +            ​afficher(apt, null, "​Upgradés :"U) 
-                        ​Itmp[l++]=I[w] +            ​afficher(aptnull"​Désinstallés :"R) 
-                        continue +            ​afficher(aptnull"​Purgés :"P) 
-                    } +            ​afficher(aptnull"​Réinstallés :"Re) 
-                    if (!apt) {printf("\t")+
-                    printf(I[w]) +
-                    if (null) {printf("​\0"​)}else{printf("​\n"​)} +
-                } +
-            } +
-            ​if (0 in Itmp) { +
-                for (tmp in Itmp) { +
-                    if (!apt) {printf("\t")} +
-                    printf(Itmp[tmp]) +
-                    if (null) {printf("​\0"​)}else{printf("​\n"​)} +
-                } +
-            ​+
-            if (0 in U) { +
-                if (!apt) {print ​"​Upgradés :"+
-                for (x in U) { +
-                    ​if ​(!apt) {printf("​\t"​)} +
-                    printf(U[x]) +
-                    if (null) {printf("​\0"​)}else{printf("​\n"​)} +
-                } +
-            } +
-            if (0 in R) { +
-                if (!apt) {print ​"​Désinstallés :"+
-                for (y in R) { +
-                    ​if ​(!apt) {printf("​\t"​)} +
-                    printf(R[y]) +
-                    if (null) {printf("​\0"​)}else{printf("​\n"​)} +
-                } +
-            } +
-            if (0 in P) { +
-                if (!apt) {print ​"​Purgés :"+
-                for (z in P) { +
-                    ​if ​(!apt) {printf("​\t"​)} +
-                    printf(P[z]) +
-                    if (null) {printf("​\0"​)}else{printf("​\n"​)} +
-                } +
-            } +
-            if (0 in Re) { +
-                if (!apt) {print ​"​Réinstallés : "+
-                for (w in Re) { +
-                    if (!apt) {printf("​\t"​)} +
-                    printf(Re[w]) +
-                    if (null) {printf("​\0"​)}else{printf("​\n"​)} +
-                } +
-            }+
             if (!apt) {             if (!apt) {
                 if (a>1) {s1="​s"​}else{s1=""​}                 if (a>1) {s1="​s"​}else{s1=""​}
Ligne 437: Ligne 430:
             date=""​             date=""​
             demand=""​             demand=""​
-            a=0; b=0; c=0; d=0; e=0; ok=0; ok1=0; l=0+            a=0; b=0; c=0; d=0; e=0; ok=0; ok1=0
         }         }
     }     }
Ligne 490: Ligne 483:
  youtube-dl:​amd64 (2021.06.06-1,​ 2021.12.17-1~bpo11+1)  youtube-dl:​amd64 (2021.06.06-1,​ 2021.12.17-1~bpo11+1)
 1 paquet upgradé 1 paquet upgradé
 +</​code>​
 +
 +=== Afficher l'​historique des désinstallations d'​unattended-upgrade dans le fichier archive 1 ===
 +<code user>ahr -c unattended -t Remove -z1</​code>​
 +<​code>​
 +Date Début ​ :  2023-04-29 23:34:02
 +Date Fin    :  2023-04-29 23:34:23
 +Commande ​   :  /​usr/​bin/​unattended-upgrade
 +Demandeur ​  : ​ tawal (1000)
 +Désinstallés :
 + linux-headers-5.10.0-20-amd64:​amd64 (5.10.158-2)
 +1 paquet désinstallé
 +
 +
 +Date Début ​ :  2023-04-29 23:34:38
 +Date Fin    :  2023-04-29 23:34:48
 +Commande ​   :  /​usr/​bin/​unattended-upgrade
 +Désinstallés :
 + linux-headers-5.10.0-20-common:​amd64 (5.10.158-2)
 +1 paquet désinstallé
 +
 +
 +Date Début ​ :  2023-04-29 23:35:05
 +Date Fin    :  2023-04-29 23:35:41
 +Commande ​   :  /​usr/​bin/​unattended-upgrade
 +Désinstallés :
 + linux-image-5.10.0-20-amd64:​amd64 (5.10.158-2)
 +1 paquet désinstallé
 </​code>​ </​code>​
utilisateurs/tawal/scripts/apt-history-research.txt · Dernière modification: 08/06/2023 22:38 par Tawal

Pied de page des forums

Propulsé par FluxBB