1 votes

Déterminer le niveau complet (y compris la date de construction) d'un dépôt AIX local sans Parcheando / installation

Dans notre environnement, seul un de nos serveurs AIX est autorisé à accéder à l'Internet à travers le pare-feu. Sur ce seul serveur, j'utilise suma pour télécharger tous les correctifs pour tous les niveaux de base, les niveaux technologiques et les Service Packs que nous avons dans notre environnement ; ceci est fait quotidiennement. Une fois par mois, je copie tous les correctifs ensemble dans un dossier par niveau de base et j'utilise inutoc pour créer un couple de dépôts qui sont gelés et qui peuvent être utilisés pour patcher tous nos serveurs AIX. De cette façon, nous pouvons nous assurer que tous les serveurs sont au même niveau d'os. Nous appelons cela un "patchset mensuel".

Nous disposons d'un fichier CSV qui répertorie toutes les versions du noyau pour chaque "patchset mensuel" pour toutes nos versions d'UNIX/Linux. Ce fichier CSV est utilisé par notre Parcheando / validation Parcheando. Pour Linux / Solaris, j'ai trouvé des "trucs" pour déterminer la version du noyau à partir des fichiers de dépôt eux-mêmes, mais sur AIX, je ne parviens pas à déterminer l'oslevel sans effectivement Parcheando un serveur avec. Après Parcheando, je peux exécuter 'oslevel -s' pour déterminer le niveau d'os, mais c'est trop tard, car nos Parcheando Parcheando utilisent / requièrent le niveau d'os avant de démarrer le Parcheando réel.

Quelqu'un connaît-il une astuce pour y parvenir ? J'ai essayé ce qui suit jusqu'à présent :

  • Notre dossier de dépôt contient de nombreux fichiers *.bff, qui sont des fichiers binaires, et je ne peux pas trouver l'oslevel dans ces fichiers.
  • Les noms de fichiers *.bff sont pour la plupart des 'U' suivis de quelques chiffres et de '.bff' (donc inutilisables pour déterminer l'oslevel). Mais certains noms de fichiers contiennent effectivement (des parties de) l'oslevel dans le nom de fichier. Par exemple : 7200-01-06.bff 7200-02-01-1732.bff 7200-02-06.bff 7200-03-06.bff 7200-03.bff 7200-04-01.bff 7200-04-02.bff 7200-04-03.bff 7200-04.bff 7200-05-01.bff 7200-05-02.bff 7200-05.bff. Cependant, comme vous pouvez le voir, dans les derniers oslevels, la partie 'build date' est manquante dans le nom du fichier.
  • Nous utilisons le patch install_all_updates -Y -d <path_to_repo> commande. J'ai essayé d'utiliser install_all_updates -p -d <path_to_repo> en espérant qu'il serait visible quelque part dans la sortie, mais ce n'est pas le cas.
  • J'ai aussi essayé installp -[lL] -d <path_to_repo> mais là aussi, le niveau d'os n'est pas visible.

J'espère que quelqu'un pourra m'aider à ce sujet.

Modifier ci-dessous (en réponse à la réponse de @Jeff Schaller)

Merci beaucoup pour votre aide !

C'est très proche de la correspondance, mais pas exactement, j'en ai peur...

--> installp -L -d /nim/export/repos/AIX/AIX7200_OS-Vendor_Repo_20200511 | grep :bos\.rte\.install: | sort -t: -k17n | tail -1 | awk -F: '{print $3, $17}'
7.2.4.2 1937
root@servername /nim/export
--> oslevel -s
7200-04-01-1939
root@servername /nim/export

Mais je ne sais pas pourquoi... Une idée ?

Plus de détails :

--> installp -L -d /nim/export/repos/AIX/AIX7200_OS-Vendor_Repo_20200511 | grep 1937 | wc -l
     613
root@servername /nim/export
--> installp -L -d /nim/export/repos/AIX/AIX7200_OS-Vendor_Repo_20200511 | grep 1939 | wc -l
       0
root@servername /nim/export
--> 

J'ai donc pensé qu'il devait y avoir un paquet installé avec une date de construction de 1939 qui fait que 'oslevel-s' affiche cette date de construction. J'ai donc exécuté les commandes suivantes pour trouver ce paquet :

--> lslpp -Lc all | awk -F':' '{print $2" "$3" "$18}' | grep 1937 | wc -l
     288
root@servername /nim/export/repos/AIX/AIX7200_OS-Vendor_Repo_20200511
--> lslpp -Lc all | awk -F':' '{print $2" "$3" "$18}' | grep 1939 | wc -l
       0
root@servername /nim/export/repos/AIX/AIX7200_OS-Vendor_Repo_20200511
--> oslevel -s
7200-04-01-1939
root@servername /nim/export/repos/AIX/AIX7200_OS-Vendor_Repo_20200511
--> 

Comme vous pouvez le voir, je n'ai pas réussi à trouver ce paquet... :(

Edit #2 ci-dessous (en réponse au commentaire de @Jeff Schaller)

root@servername /
--> instfix -ic | grep 7200-04 | grep :-:
root@servername /

Ça n'a rien donné, j'en ai peur.

De plus, je ne suis pas sûr de ce que vous voulez dire exactement par "... le serveur est en retrait par rapport au niveau d'os attendu...". N'est-ce pas le contraire ? oslevel -s' donne 1939 comme date de construction, alors que tous les paquets indiquent que la date de construction devrait être 1937. N'est-ce pas "front-leveled" alors ?

0voto

Jeff Schaller Points 489

Une étape qui pourrait s'avérer utile pourrait être d'utiliser la fonction bffcreate pour convertir ces noms de fichiers bff en noms de fichiers basés sur les paquets. Quelque chose du genre bffcreate -c -d /path/to/repo .

Pour répondre à la question, cependant, une fois que vous avez exécuté inutoc pour créer le fichier .toc, vous pouvez demander à installp pour lister le contenu du fichier TOC de ce repo dans une sortie séparée par deux points, qui inclut la date de construction dans le champ 17. Le paquet bos.rte.install sera parmi ceux qui ont la date de construction la plus récente, vous pouvez donc le rechercher et extraire sa date de construction et son VRMF (Version, Release, Modification, Fix) :

sudo installp -L -d /path/to/repo | grep :bos\.rte\.install: | sort -t: -k17n | tail -1 | awk -F: '{print $3, $17}'

Cela donnera le VRMF et la date de construction de la construction la plus récente du paquet bos.rte.install dans ce dépôt. Ajustez le awk déclaration d'impression si vous n'êtes intéressé que par un domaine ou l'autre. Le site le numéro de construction est dans le format YYww (année à 2 chiffres, semaine à 2 chiffres de cette année). Le VRMF de bos.rte.install correspondra vaguement à la sortie de oslevel vous pourriez peut-être vous fier aux trois premiers champs pour qu'ils correspondent à l'information suivante oslevel -r Par exemple, un VRMF de 7.2.4.6 correspond à un oslevel de 7200-04, tout comme un VRMF de 7.2.4.2 -- le 7.2 initial donne la partie "7200" et le 4 donne la partie "-04".

0voto

ragebunny Points 846

Au final, c'est la solution que j'ai mise en place (et qui me permet d'avoir le bon niveau d'os complet) :

Création du repo

  1. Copier tous les paquets sous forme de *.bff dans ${REPO_SNAPSHOT_PATH}
  2. Recréez le fichier .toc : rm -f "${REPO_SNAPSHOT_PATH}.toc" 2>&1 ; cd "${REPO_SNAPSHOT_PATH}" ; inutoc .
  3. Nettoyer le repo : /usr/lib/instl/lppmgr -rubxVd "${REPO_SNAPSHOT_PATH}"
  4. Renommez les fichiers bff en noms de paquets compréhensibles : bffcreate -c -d "${REPO_SNAPSHOT_PATH}"
  5. Recréez le fichier .toc une fois de plus : rm -f "${REPO_SNAPSHOT_PATH}.toc" 2>&1 ; cd "${REPO_SNAPSHOT_PATH}" ; inutoc .

Déterminer le niveau d'os complet

  1. Créer une source LPP à partir du repo : nim -o define -t lpp_source -a server=master -a location="${REPO_SNAPSHOT_PATH}" "${LPP_SOURCE_NAME}"
  2. Créer Spot à partir de cette source LPP : nim -o define -t spot -a source="${LPP_SOURCE_NAME}" -a server=master -a location="${SPOT_PATH}" "${SPOT_NAME}"
  3. Obtenez l'oslevel complet de ce Spot : FULL_OSLEVEL="$(lsnim -l ${SPOT_NAME} 2>/dev/null | awk '$1=="oslevel_s" {print $3}')"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X