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 12/11/2010, à 19:37

nco

Executer un script automatiquement apres l'update d'un package

Bonjour,

Voila j'aimerais savoir s'il est possible d'executer un script arbitraire de ma conception, de facon automatique en tout transparence, si et seulement un package bien prècis vient d'être mise a jour via apt.

Pour les recherches google, il s'agit du package hudson et de l'obligation de refaire à la mimine les credential svn et passwd vnc apres chaque mise à jour, et c'est relou !
Je fait en parrallel une demande aux devs du package s'ils peuvent faire qqs chose de leur coté, mais je serais intéressé des possibilité de customiser le process apt :-)

merci

Hors ligne

#2 Le 17/11/2010, à 05:30

luron

Re : Executer un script automatiquement apres l'update d'un package

Bonjour,

Tu pourrais créer un script que tu utiliserais à la place de apt-get. Par exemple, créer un fichier nommé aptget qui contiendrait quelque chose comme:

#!/bin/bash

paquetSurveille="hudson"
upgrade=0
arguments=""

# On récupère tous les arguments passés au script et on vérifie si une mise à jour est demandée.
for arg in "$@"; do
    arguments="$arguments $arg"
    
    if [ "$arg" == "upgrade" ]; then
        upgrade=1
    fi
done

# Si une mise à jour est demandée, on vérifie si le paquet surveillé doit être mis à jour.
if [ $upgrade -eq 1 ]; then
    # L'argument «-s» ajouté à «apt-get» permet de simuler l'action demandée.
    paquetSurveillePresent=$(apt-get $arguments -s | grep -m 1 -o "^Inst $paquetSurveille ")
    
    if [ -z "$paquetSurveillePresent" ]; then
        upgrade=0
    fi
fi

# On effectue la «vraie» commande demandée.
apt-get $arguments

# Si le paquet surveillé devait être mis à jour et si «apt-get» a terminé correctement, on lance un code personnalisé.
if [ $upgrade -eq 1 -a $? -eq 0 ]; then
    echo "Ajouter le code personnalisé."
fi

Ensuite, rendre le fichier exécutable et le déplacer dans /usr/bin/:

chmod +x aptget && sudo mv aptget /usr/bin/

Tu n'aurais qu'à utiliser ce script comme apt-get:

sudo aptget ARGUMENTS

Hors ligne