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.

Juin 152011
 

marre de chercher certains packages à installer quand je ne sais pas dans quel dépot il se trouve.

voici deux fonctions qui font les recherches pour moi (la deuxième fonction fait appel à la première.):

function swd { D=$(swlist -l depot |egrep -v '#') ; [ -n "$1" ] && echo "$D" |egrep "$1" || echo "$D" ; }
function swl { [ -z "$2" ] && L=$(swd) A=$1 || L=$(swd $1) A=$2 ; for i in $L ;do echo $i ; swlist -l fileset -s $i |egrep -i "$A" ; echo ; done ; }

Continue reading »