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

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.

© 2011 Unix Open Suffusion theme by Sayontan Sinha