Debian Debian-France Debian-Facile Debian-fr.org Debian-fr.xyz Debian ? Communautés

Debian-facile

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

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

#1 27-12-2021 00:06:45

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Outil de recherche dans l'historique d'apt

Hello,

Ce sujet fait suite à celui-ci : https://debian-facile.org/viewtopic.php?id=30791

J'ai donc fait un script de recherche dans l'historique d'apt avec un affichage humainement lisible.
Je l'ai appelé ahr (Apt History Research).
Je l'ai placé dans /usr/local/bin en l'ayant rendu exécutable auparavant.

Il nécessite d'avoir gawk installé.

En voici les retours :
    - L'aide :

ahr --help


Usage :    ahr    [-a] [-z N] [-c COMMAND] [-d DATE] [-t TYPE]   MOTIF
           ahr    [-a] [-z N] [-c COMMAND]   -d DATE   [-t TYPE] [MOTIF]
           ahr    [-a] [-z N]   -c COMMAND   [-d DATE] [-t TYPE] [MOTIF]
           ahr    [-a] [-z N] [-c COMMAND] [-d DATE]   -t TYPE   [MOTIF]

Outil de recherche dans l'historique d'apt.
Recheche sur MOTIF ou COMMAND ou DATE ou TYPE.
Si plusieurs champs de recherche sont indiqués, alors applique un ET.

Options :
    -a, --all               Rechercher dans tout l'historique, même archivé.

    -c, --command  COMMAND  Rechercher sur la commande COMMAND.

    -d, --date  DATE        Rechercher sur la date DATE.
                            Le format de DATE est AAAA[-MM[-JJ]].

    -h, --help              Afficher cette aide et quitter.

    -t, --type TYPE         Rechercher selon le TYPE, TYPE prend les valeurs :
                              Install, Reinstall, Upgrade, Remove et Purge

    -z, --dezip N           Rechercher dans le fichier archive N :
                              /var/log/apt/history.log.N.gz

Exemples et Astuces :
  - Afficher tout l'historique d'apt (archives comprises) :
        ahr -a ".*"
  - Afficher l'historique des paquets désintallés par unattended-upgrade :
        ahr -c unattended -t Remove
  - Afficher l'historique sur le mois de mars 2021 :
        ahr -d 2021-03 ou ahr -a -d 2021-03 si la date est trop ancienne.
  - Afficher l'historique des paquets installés aujourd'hui (2021-12-26) :
        ahr -t Install -d 2021-12-26
  - Afficher l'historique non archivé des paquets contenant le mot 'pulse' :
           ahr pulse

MOTIF est une partie ou un nom exact de paquet.
COMMAND est une partie ou la commande appelant l'action d'apt.
DATE est une partie ou la date de début de l'action d'apt.
TYPE est le type d'action d'apt.
                                                                       Tawal®©


    - Un exemple d'utilisation :

ahr -c unattended -d 2021-12-22


Date Début : 2021-12-22  19:10:50
Date Fin   : 2021-12-22  19:11:13
Commande   : /usr/bin/unattended-upgrade
Upgradés :
   xserver-common:amd64 (2:1.20.11-1, 2:1.20.11-1+deb11u1)
1 paquet upgradé



Date Début : 2021-12-22  19:11:21
Date Fin   : 2021-12-22  19:11:35
Commande   : /usr/bin/unattended-upgrade
Upgradés :
   xserver-xorg-core:amd64 (2:1.20.11-1, 2:1.20.11-1+deb11u1)
1 paquet upgradé



Date Début : 2021-12-22  19:11:47
Date Fin   : 2021-12-22  19:12:01
Commande   : /usr/bin/unattended-upgrade
Upgradés :
   xserver-xorg-legacy:amd64 (2:1.20.11-1, 2:1.20.11-1+deb11u1)
1 paquet upgradé
 


    - et le script :

#!/bin/bash

# Nom : ahr       Apt History Research
# Par : Tawal

# Nécessite : gawk (apt install gawk)

### Variables Internes
input=""
rech=""
opt_a=""
opt_c=""
opt_d=""
opt_t=""
opt_z=""
z=$(find /var/log/apt -type f -name "his*gz" | wc -l)    # Nombre de fichiers archivés

### Fonctions
usage() {
    echo -e "Usage :    \033[1m${0##*/}    [-a] [-z N] [-c COMMAND] [-d DATE] [-t TYPE]   MOTIF\033[0m"
    echo -e "           \033[1m${0##*/}    [-a] [-z N] [-c COMMAND]   -d DATE   [-t TYPE] [MOTIF]\033[0m"
    echo -e "           \033[1m${0##*/}    [-a] [-z N]   -c COMMAND   [-d DATE] [-t TYPE] [MOTIF]\033[0m"
    echo -e "           \033[1m${0##*/}    [-a] [-z N] [-c COMMAND] [-d DATE]   -t TYPE   [MOTIF]\033[0m"
    echo
    echo -e "Outil de recherche dans l'historique d'apt."
    echo -e "Recheche sur \033[1mMOTIF\033[0m ou \033[1mCOMMAND\033[0m ou \033[1mDATE\033[0m ou \033[1mTYPE\033[0m."
    echo "Si plusieurs champs de recherche sont indiqués, alors applique un ET."
    echo
    echo "Options :"
    echo -e "    -a, --all               Rechercher dans tout l'historique, même archivé."
    echo
    echo -e "    -c, --command  \033[1mCOMMAND\033[0m  Rechercher sur la commande \033[1mCOMMAND\033[0m."
    echo
    echo -e "    -d, --date  \033[1mDATE\033[0m        Rechercher sur la date \033[1mDATE\033[0m."
    echo -e "                            Le format de \033[1mDATE\033[0m est \033[1mAAAA[-MM[-JJ]]\033[0m."
    echo
    echo "    -h, --help              Afficher cette aide et quitter."
    echo
    echo -e "    -t, --type \033[1mTYPE\033[0m         Rechercher selon le \033[1mTYPE\033[0m, \033[1mTYPE\033[0m prend les valeurs :"
    echo -e "                              \033[1mInstall\033[0m, \033[1mReinstall\033[0m, \033[1mUpgrade\033[0m, \033[1mRemove\033[0m et \033[1mPurge\033[0m"
    echo
    echo -e "    -z, --dezip \033[1mN\033[0m           Rechercher dans le fichier archive \033[1mN\033[0m :"
    echo -e "                              /var/log/apt/history.log.\033[1mN\033[0m.gz"
    echo
    echo "Exemples et Astuces :"
    echo "  - Afficher tout l'historique d'apt (archives comprises) :"
    echo -e "        \033[1m${0##*/} -a \".*\"\033[0m"
    echo "  - Afficher l'historique des paquets désintallés par unattended-upgrade :"
    echo -e "        \033[1m${0##*/} -c unattended -t Remove\033[0m"
    echo "  - Afficher l'historique sur le mois de mars 2021 :"
    echo -e "        \033[1m${0##*/} -d 2021-03\033[0m ou \033[1mahr -a -d 2021-03\033[0m si la date est trop ancienne."
    echo "  - Afficher l'historique des paquets installés aujourd'hui (2021-12-26) :"
    echo -e "        \033[1m${0##*/} -t Install -d 2021-12-26\033[0m"
    echo "  - Afficher l'historique non archivé des paquets contenant le mot 'pulse' :"
    echo -e "           \033[1m${0##*/} pulse\033[0m"
    echo
    echo -e "\033[1mMOTIF\033[0m est une partie ou un nom exact de paquet."
    echo -e "\033[1mCOMMAND\033[0m est une partie ou la commande appelant l'action d'apt."
    echo -e "\033[1mDATE\033[0m est une partie ou la date de début de l'action d'apt."
    echo -e "\033[1mTYPE\033[0m est le type d'action d'apt."
    printf "%80s\n" "Tawal®©"
    exit 0
}

erreur() {
    echo -e "Motif absent ou pas d'utilisation d'une des options '\033[1m-c\033[0m' ou '\033[1m-d\033[0m' ou '\033[1m-t\033[0m'." >&2
    exit 1
}

opt_err() {
    echo -e "Option \033[1m'$1'\033[0m non-reconnue !" >&2
    exit 1
}

test_opt() {
    if [ "$1" = "opt_az" ] && [ "$opt_a" ] && [ "$opt_z" ]
    then
        echo -e "Options '\033[1m-a\033[0m' et '\033[1m-z\033[0m' incompatibles." >&2
        exit 1
    elif [ "$1" = "opt_z" ]
    then
        if [[ "$2" != [[:digit:]]* ]]
        then
            echo -e "L'argument de l'option \033[1m'-z'\033[0m doit être un nombre." >&2
            exit 1
        fi
    elif [ "$1" = "opt_t" ]
    then
        if [ "$2" != "Install" -a "$2" != "Reinstall" -a "$2" != "Upgrade" -a "$2" != "Remove" -a "$2" != "Purge" ]
        then
            echo -e "L'option \033[1m-t\033[0m ne prend que les mots \033[1mInstall\033[0m, \033[1mReinstall\033[0m, \033[1mUpgrade\033[0m, \033[1mRemove\033[0m et \033[1mPurge\033[0m." >&2
            exit 1
        fi
    fi
}

dezip() {
    if [ "$1" = "all" ]
    then
        for ((i=$z; i>=1; i--))
        do
            input="$input"$(zcat /var/log/apt/history.log.$i.gz)
        done
        input="$input"$(</var/log/apt/history.log)
    else
        if [ -e /var/log/apt/history.log.$1.gz ]
        then
            input=$(zcat /var/log/apt/history.log.$1.gz)
        else
            echo "Pas de fichier /var/log/apt/history.log.$1.gz" >&2
            exit 1
        fi
    fi
}

### Gestion des Options.
while getopts :ac:d:ht:z:-: option
do
    case $option in
        a) opt_a="ON"
           test_opt opt_az
           dezip all
           ;;
        c) opt_c="$OPTARG"
           ;;
        d) opt_d="$OPTARG"
           ;;
        z) opt_z="ON"
           test_opt opt_az
           test_opt opt_z $OPTARG
           dezip $OPTARG
           ;;
        h) usage
           ;;
        t) test_opt opt_t "$OPTARG"
           opt_t="$OPTARG"
           ;;
        -) case $OPTARG in
                 all) opt_a="ON"
                      test_opt opt_az
                      dezip all
                      ;;
             command) opt_c="${!OPTIND}"
                      OPTIND=$((OPTIND+1))
                      ;;
                date) opt_d="${!OPTIND}"
                      OPTIND=$((OPTIND+1))
                      ;;
               dezip)
                      opt_z="ON"
                      test_opt opt_az
                      test_opt opt_z $OPTARG
                      dezip ${!OPTIND}
                      OPTIND=$((OPTIND+1))
                      ;;
                help) usage
                      ;;
                type) test_opt opt_t ${!OPTIND}
                      opt_t="${!OPTIND}"
                      OPTIND=$((OPTIND+1))
                      ;;
                   *) opt_err --$OPTARG
                      ;;
           esac
           ;;
        *) opt_err -$OPTARG
           ;;
    esac
done
shift $((OPTIND-1))

if [ "$1" ]
then
    rech="$1"
elif [ ! "$opt_c" ] && [ ! "$opt_d" ] && [ ! "$opt_t" ]
then
    erreur
fi


### Test de la présence de gawk
if ! hash gawk >/dev/null 2>&1
then
    echo -e "Ce script fonctionne avec \033[1mgawk\033[0m." >&2
    echo "Pour l'installer : sudo apt install gawk" >&2
    exit 1
fi

### Si pas d'option -a ou -z --> création de l'entrée
if [ ! "$input" ]
then
    input=$(</var/log/apt/history.log)
fi


### Corps du programme
gawk -vrech="$rech" -vopt_c="$opt_c" -vopt_d="$opt_d" -vopt_t="$opt_t" '
    BEGIN {
        PROCINFO["sorted_in"]="@val_str_asc"
    }
    {
        if ($1 ~/Start/) {
            start="Date Début : "$2"  "$3
            date=$2
            ok=0
            next
        }
        if ($1 ~ /Commandline/) {
            command=gensub($1" ", "", 1)
            next
        }
        if ($1 ~ /Requested-By/) {
            demand=gensub($1" ", "", 1)
            next
        }
        if ($1~ /End/) {
            end="Date Fin   : "$2"  "$3
            ok=1
        }
        if ((opt_c && command ~ opt_c && opt_d && date ~ opt_d && rech && $0 ~ rech && opt_t && $1 ~ opt_t) || \
           (!opt_c && opt_d && date ~ opt_d && rech && $0 ~ rech && opt_t && $1 ~ opt_t) || \
           (!opt_c && !opt_d && rech && $0 ~ rech && opt_t && $1 ~ opt_t) || \
           (opt_c && command ~ opt_c && !opt_d && rech && $0 ~ rech && opt_t && $1 ~ opt_t) || \
           (opt_c && command ~ opt_c && opt_d && date ~ opt_d && !rech && opt_t && $1 ~ opt_t) || \
           (!opt_c && opt_d && date ~ opt_d && !rech && opt_t && $1 ~ opt_t) || \
           (opt_c && command ~ opt_c && !opt_d && !rech && opt_t && $1 ~ opt_t) || \
           (opt_c && command ~ opt_c && opt_d && date ~ opt_d && rech && $0 ~ rech && !opt_t) || \
           (!opt_c && opt_d && date ~ opt_d && rech && $0 ~ rech && !opt_t) || \
           (!opt_c && !opt_d && rech && $0 ~ rech && !opt_t) || \
           (opt_c && command ~ opt_c && !opt_d && rech && $0 ~ rech && !opt_t) || \
           (opt_c && command ~ opt_c && opt_d && date ~ opt_d && !rech && !opt_t) || \
           (!opt_c && opt_d && date ~ opt_d && !rech && !opt_t) || \
           (opt_c && command ~ opt_c && !opt_d && !rech && !opt_t) || \
           (!opt_c && !opt_d && !rech && opt_t && $1 ~ opt_t)) {
               ok1=1
        }
        if (ok1) {
            for (v=2; v<=NF-1; v++) {
                if ($v !~ /,/) {
                    if ($(v+2) ~ /)/) {
                        der=gensub(",", "", 1, $(v+2))
                        paq=$v" "$(v+1)" "der
                    }else{
                        pre=gensub(",", "", 1, $(v+1))
                        paq=$v" "pre
                    }
                    if ($1 ~ /Install:/) {
                        I[a++]=paq
                    }else if ($1 ~ /Upgrade:/) {
                        U[b++]=paq
                    }else if ($1 ~ /Remove:/) {
                        R[c++]=paq
                    }else if ($1 ~ /Purge:/) {
                        P[d++]=paq
                    }else if ($1 ~ /Reinstall:/) {
                        Re[e++]=paq
                    }
                }
            }
        }
        if (ok && ok1) {
            print start
            print end
            if (command) {print "Commande   : "command}
            if (demand) {print "Demandeur  : "demand}
            if (0 in I) {
                print "Installés :"
                for (w in I) {
                    if (I[w] ~ /,/) {
                        Itmp[l++]=I[w]
                        continue
                    }
                    print "\t",I[w]
                }
            }
            if (0 in Itmp) {
                for (tmp in Itmp) {
                    print "\t",Itmp[tmp]
                }
            }
            if (0 in U) {
                print "Upgradés :"
                for (x in U) {
                    print "\t",U[x]
                }
            }
            if (0 in R) {
                print "Désinstallés :"
                for (y in R) {
                    print "\t",R[y]
                }
            }
            if (0 in P) {
                print "Purgés :"
                for (z in P) {
                    print "\t",P[z]
                }
            }
            if (0 in Re) {
                print "Réinstallés : "
                for (w in Re) {
                    print "\t",Re[w]
                }
            }
            if (a>1) {s1="s"}else{s1=""}
            if (b>1) {s2="s"}else{s2=""}
            if (c>1) {s3="s"}else{s3=""}
            if (d>1) {s4="s"}else{s4=""}
            if (e>1) {s5="s"}else{s5=""}
            if (a>0) {print a,"paquet"s1" installé"s1}
            if (b>0) {print b,"paquet"s2" upgradé"s2}
            if (c>0) {print c,"paquet"s3" désinstallé"s3}
            if (d>0) {print d,"paquet"s4" purgé"s4}
            if (e>0) {print e,"paquet"s5" réinstallé"s5}
            print "\n"
           
            delete I; delete U; delete R; delete P; delete Re; delete Itmp
            command=""
            date=""
            demand=""
            a=0; b=0; c=0; d=0; e=0; ok=0; ok1=0; l=0
        }
    }
'
<<< $input



On retrouve donc les fonctionnalités d'apt-hist (voir lien ci-dessus) avec les commandes :
    - ahr ".*" pour afficher l'historique d'apt non archivé.
    - ahr -a ".*" pour afficher tout l'historique d'apt.
De même avec l'option z.

Voilà, je pense ce script plus utile que le précédent et assez complet dans le type de recherche sur l'historique d'apt.

Ah oui ! la licence est : Faites-en ce que vous voulez !

Edit:
1ère mise à jour :
    - correction du contrôle de l'argument de l'option -t.
    - mise à jour de l'aide.

Edit2:
2ième mise à jour :
    - calcul automatique du nombre de fichiers archivés
    - suppression de la variable modifiable z (nb de fichiers archivés).

Edit3:
Mise à jour du script :
    - ajout du test de la présence de gawk (sortie avec message en cas d'absence), le tout juste après la gestion des options afin de garder l'aide accessible.

Dernière modification par Tawal (30-12-2021 22:10:37)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#2 27-12-2021 11:58:58

clahor
Membre
Inscription : 05-03-2013

Re : Outil de recherche dans l'historique d'apt

bonjour merci pour ce script

si on place le script ailleurs que dans /usr/local/bin/ ça fonctionne ou pas

dans le dossier personnel j'ai un message d'erreur
ahr.sh: 104: Syntax error: Bad for loop variable

Hors ligne

#3 28-12-2021 07:58:08

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Outil de recherche dans l'historique d'apt

En fait, pour que le script fonctionne comme une commande, il faut le placer dans un dossier du PATH.
/usr/local/bin est dédié a cela.
Il faut aussi le rendre exécutable (chmod +x nom_du_script).

Étrange ton erreur tout de même, je n'arrive pas à la reproduire.

Edit:
Si tu appelles le script ahr.sh, alors la commande sera ahr.sh options ....

Dernière modification par Tawal (28-12-2021 08:00:19)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#4 28-12-2021 18:02:51

clahor
Membre
Inscription : 05-03-2013

Re : Outil de recherche dans l'historique d'apt

j'ai tjrs le meme message d'erreur avec le script pourtant placé au bon endroit......

ça restera un mystère

Hors ligne

#5 28-12-2021 18:38:32

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Outil de recherche dans l'historique d'apt

Combien as-tu de fichiers d'historique archivés ?
Pour le savoir :

ls -l /var/log/apt/history.log.*.gz



Ensuite, quand tu connais ce nombre, tu modifies la ligne 104 :         for ((i=$z; i>=1; i--)) et tu remplaces $z par ce nombre.


Edit:
Non, je ne crois pas que ça vienne de là.
Mais plutôt de l'interpréteur sh ou bash.
As-tu bien

#!/bin/bash

en première ligne du script ?
Sinon, comment lances-tu ce script ? avec quelle commande exactement ?

Edit2:
Erreur reproduite ainsi (placé dans le dossier du script ahr) :

$ sh ahr -a ".*"
ahr: 104: Syntax error: Bad for loop variable


C'est bien un souci d'interpréteur, sh ne supporte pas cette forme de boucle.
Il faut utiliser bash, d'où le shebang d'ailleurs ...

Dernière modification par Tawal (28-12-2021 19:51:05)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#6 28-12-2021 19:46:53

clahor
Membre
Inscription : 05-03-2013

Re : Outil de recherche dans l'historique d'apt

merci pour la réponse

@debian:~$ ls -l /var/log/apt/history.log.*.gz

-rw-r--r-- 1 root root  4939 27 nov.  14:39 /var/log/apt/history.log.1.gz

-rw-r--r-- 1 root root  5917 30 oct.  11:37 /var/log/apt/history.log.2.gz

-rw-r--r-- 1 root root 10211 30 sept. 10:24 /var/log/apt/history.log.3.gz

-rw-r--r-- 1 root root  7453 27 août  12:34 /var/log/apt/history.log.4.gz

-rw-r--r-- 1 root root 22146 30 juil. 12:24 /var/log/apt/history.log.5.gz



Sinon, comment lances-tu ce script ? avec quelle commande exactement ?

sh nom_du_script

Dernière modification par clahor (28-12-2021 19:47:46)

Hors ligne

#7 28-12-2021 19:56:28

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Outil de recherche dans l'historique d'apt

Place ce script dans /usr/local/bin (il faut des droits root).
Ainsi, ce fichier devient une commande (car /usr/local/bin/ est dans le PATH).
Tu peux tester avec :

nom_du_fichier --help



C'est pour ça que j'ai appelé mon script juste ahr, pas de .sh
Comme ça le mot ahr est une commande chez moi.


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#8 28-12-2021 20:03:52

clahor
Membre
Inscription : 05-03-2013

Re : Outil de recherche dans l'historique d'apt

merci a toi

ça fonctionne deja mieux  mais petit message d'erreur

@debian:/usr/local/bin$ sudo ahr -d 2021-03

/usr/local/bin/ahr: ligne 192: gawk : commande introuvable

Dernière modification par clahor (28-12-2021 20:05:25)

Hors ligne

#9 28-12-2021 20:49:58

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Outil de recherche dans l'historique d'apt

Ah oui, j'ai oublié de préciser qu'il nécessite gawk.
Pour y remédier :

apt install gawk


Merci du retour, je l'indique dans le message #1 wink

Edit:
Pas besoin de sudo, ni d'être dans le dossier /usr/local/bin, pour lancer la commande wink
Les droits root n'étaient nécessaires que pour copier le fichier dans /usr/local/bin.

Dernière modification par Tawal (28-12-2021 20:55:05)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#10 28-12-2021 23:26:14

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Outil de recherche dans l'historique d'apt

Mise à jour du script.
Voir #1.

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#11 29-12-2021 12:14:10

clahor
Membre
Inscription : 05-03-2013

Re : Outil de recherche dans l'historique d'apt

et bien felicitations tu peux aller travailler chez google ils doivent rechercher des dev sous linux

ça fonctionne c'est vrai qu'après on en fait ce qu'on veut

tu as d'autres scripts comme ça????

Hors ligne

#12 29-12-2021 18:46:59

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Outil de recherche dans l'historique d'apt

merci.gif
Mais hors de question de travailler pour ce genre d'entreprise ...

Script listant les processus utilisant le swap :
https://debian-facile.org/viewtopic.php?id=29947

Script listant les jours fériés d'une année donnée en argument :
https://debian-facile.org/viewtopic.php?id=30920

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#13 30-12-2021 10:01:18

clahor
Membre
Inscription : 05-03-2013

Re : Outil de recherche dans l'historique d'apt

Merci pour les scripts.....tu utilises beaucoup le dossier temps il faut nettoyer
après?

Hors ligne

#14 30-12-2021 11:52:27

LinuxEveryDay
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : Metacity (Marco) MATE
Inscription : 28-09-2021

Re : Outil de recherche dans l'historique d'apt

Merci bien Tawal, script très utile pour Sid histoire de suivre les upgrade pour les "desktop-environnement" (gnome41 et mate 1.26 ici).

Juste en passant -> je mets tous les scripts "perso, copier/coller etc..." dans

~/.local/bin

qui est par défault dans $PATH de l'utilisateur courant je crois. Ça permet de ne pas mettre les droits d'éxécution root à tout ce qu'on copie/colle (je parle pas des script de DF mais en général). Si je dis des conneries corriger moi hmm

Dernière modification par LinuxEveryDay (30-12-2021 11:57:04)


Si Mr et Mdm tout le monde sont perdus sous Linux, c’est juste qu’ils ont plus l’habitude d’être libre ;-)

Hors ligne

#15 30-12-2021 12:10:48

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-18-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : Outil de recherche dans l'historique d'apt

et hop un de + dans mes notes merci.gif
Tu utilises geany pour faire tes scripts?

Juste en passant -> je mets tous les scripts "perso, copier/coller etc..." dans

~/.local/bin


oue mais c'est parce que tu les veux pour toi tout seul mrgreen.gif

Dernière modification par Croutons (30-12-2021 12:26:17)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#16 30-12-2021 13:43:56

LinuxEveryDay
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : Metacity (Marco) MATE
Inscription : 28-09-2021

Re : Outil de recherche dans l'historique d'apt

Croutons a écrit :


oue mais c'est parce que tu les veux pour toi tout seul mrgreen.gif


c pas faux, en attendant que

 if (user2 == elle me supporte plus de 3 jours)
{
   cp le script dans /home/user2/.local/bin ;
}
else
{
printf("si t'hésite à rappeler, hésite") ;
}
 


*tin out.gif

banané!acid.gif


Si Mr et Mdm tout le monde sont perdus sous Linux, c’est juste qu’ils ont plus l’habitude d’être libre ;-)

Hors ligne

#17 30-12-2021 17:41:46

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Outil de recherche dans l'historique d'apt

Croutons a écrit :

Tu utilises geany pour faire tes scripts?


Késako ?
Non, j'utilise nano pour les petits scripts et gedit pour les autres.
Des fois, j'utilise aussi shellcheck pour vérifier le script du point de vue syntaxe et cohérence.

merci.gif à vous pour ces retours smile

Edit:

clahor a écrit :

tu utilises beaucoup le dossier temps il faut nettoyer après?


Non, quand j'utilise un fichier temporaire (je le place en général dans /tmp), je fais le ménage avant de quitter le script wink
De plus, le dossier /tmp est nettoyé à chaque démarrage.

Edit2:

LinuxEveryDay a écrit :

Juste en passant -> je mets tous les scripts "perso, copier/coller etc..." dans

~/.local/bin


Personnellement, je fais d'une manière différente.
Tous les scripts pouvant être utile à plusieurs utilisateurs sont placés dans /usr/local/bin. Ils sont ainsi accessibles par tous les utilisateurs (voir remarque de Croutons)
Tous les scripts de configuration de session (démarrge de conky ...), spécifique à un utilisateur etc, sont placés dans /home/$USER/bin.
Mais /home/$USER/bin n'est pas dans le PATH par défaut (tout comme ~/.local/bin il me semble). Il faut donc le rajouter manuellement au PATH, mais une fois fait, je trouve plus pratique de les avoir visibles (lecture et édition plus facile graphiquement et même en ligne de commande : nano ~/bin/script est plus rapide à taper que nano ~/.local/bin/script)

Dernière modification par Tawal (30-12-2021 18:11:36)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#18 30-12-2021 21:40:40

cyrille
CA Debian-Facile
Distrib. : SID + FreeBSD. Stable sur serveurs.
(G)UI : Xfce/Openbox
Inscription : 21-06-2020
Site Web

Re : Outil de recherche dans l'historique d'apt

Il nécessite d'avoir gawk installé.


TU peux tester sa présence, par exemple

# Test de la présence des paquets nécessaires

dpkg -s gawk  &> /dev/null

if [ $? -eq 0 ]; then
    echo -e "\ngawk est installé. Continuons.\n"
else
    echo -e "\ngawk n'est pas installé. \n"
    # Ici la procédure à suivre : installation ? Message d'erreur ? Autre
   
fi


wink mes 2 sous

Dernière modification par cyrille (30-12-2021 21:41:42)


"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."

Association Debian-Facile | Les cahiers du débutant | ISO Debian-FacilePage perso. sur #df

En ligne

#19 30-12-2021 21:54:17

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Outil de recherche dans l'historique d'apt

Pour tester la présence d'une commande, je préfère :

if ! hash gawk >/dev/null 2>&1
then
     echo "Nécessité d'installer gawk" >&2
     exit 1
fi


La commande hash à l'avantage de "hasher" la commande, elle est plus rapide d'accès ensuite.

Edit:
Je mets à jour le script au #1.
Car c'est vrai que pour un script partagé, il est intéressant de tester et d'informer en cas.

Dernière modification par Tawal (30-12-2021 22:02:47)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#20 30-12-2021 22:11:21

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Outil de recherche dans l'historique d'apt

Mise à jour du script.
Voir message #1, edit3.

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#21 31-12-2021 12:47:05

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-18-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : Outil de recherche dans l'historique d'apt

Tawal a écrit :

Késako ?
Non, j'utilise nano pour les petits scripts et gedit pour les autres.
Des fois, j'utilise aussi shellcheck pour vérifier le script du point de vue syntaxe et cohérence.


Je connais pas shellcheck
Mais depuis que je connais geany je ne fais plus un script sans, ta le bouton exécuté et tu sais de suite le résultat de ton script
Je fais beaucoup d'erreur mais grace a geany ça va vite
regarde voir

apt search geany


j'ai installé les plugins j'en ai activé certain qui me semblait utile
le top c'est que tu peux travailler sur ton script pas longtemps des que tu ouvres geany ils sont devant toi

en vrai le Tawal tu me taquine vilain mrgreen.gif question.gif

Dernière modification par Croutons (31-12-2021 12:50:38)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#22 31-12-2021 12:59:07

cyrille
CA Debian-Facile
Distrib. : SID + FreeBSD. Stable sur serveurs.
(G)UI : Xfce/Openbox
Inscription : 21-06-2020
Site Web

Re : Outil de recherche dans l'historique d'apt

En effet, très intéressant "shellcheck", j'ai du taf pour corriger mes scripts wink

"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."

Association Debian-Facile | Les cahiers du débutant | ISO Debian-FacilePage perso. sur #df

En ligne

Pied de page des forums