#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