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
Prochaine révision Les deux révisions suivantes
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 [12/05/2023 22:05]
Tawal
Ligne 1: Ligne 1:
 ====== Outil de recherche dans l'​historique d'apt ====== ====== Outil de recherche dans l'​historique d'apt ======
 +<​note>​\\ 
 +Mise à jour le : 12/​05/​2023</​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
   * Nécessite //gawk// : ''​apt install gawk''​   * Nécessite //gawk// : ''​apt install gawk''​
 +  * Nécessite //zcat// : ''​apt install gzip''​
  
 ===== L'aide ===== ===== L'aide =====
-<​code>​Apt History Research - ahr+<​code>​Apt History Research - ahr - 2023-05-12-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 58:
                                                                        ​Tawal®©</​code>​                                                                        ​Tawal®©</​code>​
 ===== Le script ===== ===== Le script =====
-(mis à jour le 10/03/2023 21:22)+(mis à jour le 12/05/2023 22:05)
 <file bash ahr>#​!/​bin/​bash <file bash ahr>#​!/​bin/​bash
  
Ligne 60: Ligne 67:
 # Nécessite : gawk (apt install gawk) # Nécessite : gawk (apt install gawk)
 # #
-version=2023-03-10 +version=2023-05-12-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 84:
  
 ### 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 134:
 } }
  
-version()+version_quit()
 { {
     echo "​$version"​     echo "​$version"​
Ligne 134: Ligne 140:
 } }
  
-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 202:
     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 208:
            ;;            ;;
         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 227:
         -) 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 236:
                       ;;                       ;;
                 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 242:
                       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 280:
 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 298:
             zap="​on"​             zap="​on"​
         else         else
-            ​erreur ​log+            ​erreur_quit ​log
         fi         fi
     fi     fi
Ligne 289: Ligne 307:
 # 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 401:
                 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 426:
             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 479:
  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