5 votes

Comment vérifier la version d'OS X installée depuis la ligne de commande sur chaque partition ?

Je gère un grand nombre de Mac et chaque machine possède plusieurs partitions avec des versions d'OS différentes.

J'aimerais créer un script que je pourrais exécuter pour faire l'inventaire de toutes les partitions de toutes les machines et prendre note de l'OS installé sur chaque partition.

Sur la partition active, il serait facile de l'obtenir par le biais de la fonction sw_vers commandement. Mais qu'en est-il sur une autre partition ?

4voto

joelseph Points 10262

La commande suivante vous donnera la version d'OS X installée sur volumeName :

defaults read /Volumes/volumeName/System/Library/CoreServices/SystemVersion ProductVersion

Pour obtenir une liste de la version du système d'exploitation de chaque volume, vous avez besoin d'un simple script qui obtiendra une liste de volumes, cherchera dans chacun d'eux le SystemVersion.plist, et rapportera ceux qui sont trouvés.

J'ai trouvé un script sur on. Conseils pour Mac OS X par Hal Itosis, qui fait exactement cela (repris ci-dessous pour plus de commodité).

#!/bin/bash -
PATH=/bin:/usr/bin
export PATH
IFS=$'\n'

vList=$(df -l | sed '1d;s:^.*%[[:space:]]*::')
sPath=$(find -x /Volumes -maxdepth 1 -type l -not -inum 2)
pFile=/System/Library/CoreServices/SystemVersion

SysVers ()
{
   if [ -e "${1}${pFile}.plist" ]; then
      n="$1"; if [ "$1" = '/' ]; then n="$sPath"; fi
      x=`defaults read ${1}${pFile} ProductVersion`
      b=`defaults read ${1}${pFile} ProductBuildVersion`
      printf '%-16s %-8s %-8s\n' "${n##/*/}" "$x" "($b)"
   fi
}

if [ $# -eq 0 ]; then for v in $vList; do SysVers "$v"; done
else while [ $# -gt 0 ]; do SysVers "$1"; shift; done; fi
exit

2voto

stuffe Points 25320

Vous pouvez utiliser la commande diskutil dans le terminal, qui, grosso modo, permet de script et d'effectuer les mêmes actions que dans la version GUI.

En utilisant ceci, il est possible de créer un script qui recherche les informations dont vous avez besoin, mais vous devez être prudent en spécifiant quels disques vous regardez - si vous faites une vérification générale sur tous les disques, vous obtiendrez des images de disque et toutes sortes de choses si vous n'êtes pas prudent, plus vous vous retrouverez avec les partitions de récupération et ainsi de suite, etc.

De plus, l'utilitaire de disque ne fournit que le format de la partition, bien que cela vous donne un indice sur ce que vous pouvez rechercher par la suite, par exemple, recherchez un fichier appelé "mach_kernel" et il y a de fortes chances qu'il contienne OS X, qu'il ait un répertoire "/Windows"...etc etc, même dans ce cas vous trouverez des partitions qui sont formatées aux formats Mac ou Win sans système d'exploitation installé, donc dans l'ensemble ce n'est pas une tâche triviale. Si vous savez où se trouvent les logs d'installation d'OSX/Windows, vous pouvez peut-être insérer une logique permettant d'extraire un niveau de service pack, ou un niveau de patch, etc, mais je n'ai pas encore trouvé comment le faire.

Dans-iMac:~ stuffe$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *640.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            639.3 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *18.7 MB    disk1
   1:        Apple_partition_map                         32.3 KB    disk1s1
   2:                  Apple_HFS SMARTReporter           18.7 MB    disk1s2
Dans-iMac:~ stuffe$ diskutil info disk0s2
   Device Identifier:        disk0s2
   Device Node:              /dev/disk0s2
   Part of Whole:            disk0
   Device / Media Name:      Customer

   Volume Name:              Macintosh HD
   Escaped with Unicode:     Macintosh%FF%FE%20%00HD

   Mounted:                  Yes
   Mount Point:              /
   Escaped with Unicode:     /

   File System Personality:  Journaled HFS+
   Type (Bundle):            hfs
   Name (User Visible):      Mac OS Extended (Journaled)
   Journal:                  Journal size 49152 KB at offset 0x129d000
   Owners:                   Enabled

   Partition Type:           Apple_HFS
   OS Can Be Installed:      Yes
   Media Type:               Generic
   Protocol:                 SATA
   SMART Status:             Verified
   Volume UUID:              7B3DEC51-1C86-37B5-95CE-888AE0EBD610

   Total Size:               639.3 GB (639275270144 Bytes) (exactly 1248584512 512-Byte-Blocks)
   Volume Free Space:        343.5 GB (343520002048 Bytes) (exactly 670937504 512-Byte-Blocks)
   Device Block Size:        512 Bytes

   Read-Only Media:          No
   Read-Only Volume:         No
   Ejectable:                No

   Whole:                    No
   Internal:                 Yes
   Solid State:              No

Dans-iMac:~ stuffe$ mountpoint=`diskutil info disk0s2 | grep "Mount Point" | awk '{print $3}'`
Dans-iMac:~ stuffe$ ls -l $mountpoint | grep -E "mach_kernel|windows"
-rw-r--r--@  1 root  wheel  15565404 10 Aug  2011 mach_kernel
Dans-iMac:~ stuffe$ 

Mettre tout cela ensemble dans une boucle appropriée qui identifie tous les disques qui vous intéressent, en supprimant les images de disques, les clés USB, etc., et en configurant l'exécution à distance via SSH ou autre.... est laissé comme un exercice pour les intéressés...

2voto

kenorb Points 11627

Voici un exemple de ligne unique qui obtient l'information sur la version à partir de SystemVersion.plist :

ex -s +'%s/<[^>].\{-}>//ge' +'%s/\s\+//e' +'%norm J' +'g/^$/d' +%p +q! /System/Library/CoreServices/SystemVersion.plist

Vous pouvez utiliser head , tail ou awk pour un traitement ultérieur, par exemple pour obtenir ProductVersion essayez d'ajouter :

| grep ^ProductVersion | cut -d' ' -f2

Voici l'approche alternative :

egrep "<string|key>" /System/Library/CoreServices/SystemVersion.plist | paste - -

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X