Juin 152011
 

si vous souhaitez savoir si un patch existe ou a existé sur un serveur HP, vous avez deux solutions.
la solution simple:

# swlist -x show_superseded_patches=true PHKL_40381

l’inconvénient c’est que selon le niveau de superseding, on peut ne pas trouver.
et de toutes façons, on a pas toutes les infos.
exemple sur un de mes systèmes:

ERROR:   Software "PHKL_38038" was not found

la solution script:

Download : supersede.sh#!/bin/ksh

PATCHS_TO_FOUND= »$(echo $* |tr  »  » « | ») »

[ -z « $PATCHS_TO_FOUND » ] && {
echo « Erreur: merci de mettre un nom/numero patch en argument »
exit
}

cd /var/adm/sw/products

for i in PH*/pfiles/README
do
awk -v i= »${i%%/*}:  » ‘BEGIN {
printf « %s »,i
}
/^Supersedes:$/,/^$/ {
printf
}
END {
printf « \n »
}’ $i
done | \
sed ‘s/: $/: Exist, no supersedding/’ | \
egrep « $PATCHS_TO_FOUND » | \
tr  »  »  »  » | \
tr -s  »  » | \
while read line
do
for patch in $(echo « $PATCHS_TO_FOUND » |tr « | »  » « )
do
[ -n « $(echo $line |grep $patch) » ] || continue
echo $line |awk -v patch=$patch ‘{
for ( i=1 ; i<=NF ; i++ ){ if ($i ~ patch) { gsub("^","-=[",$i) ; gsub("$","]=-",$i) ; print ; exit ; } } }' done done exit 0 [/bash]

avec son exemple sur le même système qu’au dessus:

# supersede.sh PHKL_38038
PHKL_41005: Supersedes: PHKL_36241 PHKL_36160 PHKL_35936 PHKL_35899 PHKL_36872 PHKL_36457 PHKL_36242 PHKL_38987 PHKL_38449 PHKL_38275 PHKL_38243 PHKL_38174 -=[PHKL_38038]=- PHKL_37452 PHKL_37185 PHKL_37184 PHKL_36054 PHKL_35900 PHKL_40942 PHKL_40441 PHKL_40240 PHKL_40130 PHKL_39747 PHKL_39401 PHKL_38949 PHKL_38651
PHKL_41362: Supersedes: PHKL_36241 PHKL_36160 PHKL_35936 PHKL_35899 PHKL_36872 PHKL_36457 PHKL_36242 PHKL_38987 PHKL_38449 PHKL_38275 PHKL_38243 PHKL_38174 -=[PHKL_38038]=- PHKL_37452 PHKL_37185 PHKL_37184 PHKL_36054 PHKL_35900 PHKL_41588 PHKL_41355 PHKL_41005 PHKL_40942 PHKL_40441 PHKL_40240 PHKL_40130 PHKL_39747 PHKL_39401 PHKL_38949 PHKL_38651

on identifie facilement si un patch existe ou même s’il est supersedé, ça fonctionne à tout les coups.
vous pouvez même vous passer d’utiliser le nom complet, une recherche sur 38038 aurait fonctionné pareil, et vous pouvez analyser plusieurs patchs en même temps.