Come verificare la versione di OS X installata dalla riga di comando su ciascuna partizione?

4

Gestisco molti Mac e ogni macchina ha diverse partizioni con diverse versioni del sistema operativo.

Vorrei creare uno script che possa essere eseguito per fare un inventario di tutte le partizioni di tutte le macchine e prendere nota del sistema operativo installato su ogni partizione.

Sulla partizione attiva, sarebbe facile ottenerlo tramite il comando sw_vers . Ma che dire di una partizione diversa?

    
posta icasimpan 10.02.2012 - 10:05
fonte

3 risposte

3

Il seguente comando ti darà la versione OS X installata su volumeName :

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

Per ottenere un elenco della versione del SO di ogni volume, è necessario uno script semplice che ottenga un elenco di volumi, cerchi ciascuno per SystemVersion.plist e ne riporti tutti quelli trovati.

Ho trovato uno script su Suggerimenti per Mac OS X , di Hal Itosis, che fa proprio questo (ripubblicato qui sotto per comodità).

#!/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
    
risposta data 10.02.2012 - 16:22
fonte
2

È possibile utilizzare il comando diskutil nel terminale, che in parole povere offre la possibilità di creare script ed eseguire le stesse azioni che è possibile nella versione della GUI.

Usando questo è possibile creare uno script che scava per le informazioni che ti servono, ma devi fare attenzione a specificare quali dischi stai guardando - se fai un controllo generale su tutti i dischi, otterrai immagini del disco e tutti i tipi inclusi se non si fa attenzione, in più si finirà con le partizioni di ripristino e così via ecc.

Inoltre, l'utilità del disco fornisce solo il formato della partizione, anche se questo ti dà un suggerimento su ciò che puoi cercare successivamente, cioè cerca un file chiamato "mach_kernel" e probabilmente hai OS X su di esso, è che ha una directory "/ windows" ... ecc. ecc., anche allora troverai le partizioni che sono formattate su Mac o formati Win senza OS installato, quindi tutto sommato non è un compito banale. Se sai dove sono i log del programma di installazione di OSX / Windows, potresti essere in grado di inserire una logica tale da estrarre un livello di service pack, un livello di patch ecc., Ma non riesco ancora a scoprire come farlo.

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$ 

Mettendo tutto questo insieme in un loop adatto che identifica tutti i dischi che ti interessano, rimuovendo le chiavette USB delle immagini del disco ecc. e impostandole in modo da eseguire in remoto via SSH o qualsiasi altra cosa .... viene lasciato come esercizio per gli interessati ...

    
risposta data 10.02.2012 - 13:16
fonte
2

Ecco un one-liner di esempio che ottiene le informazioni sulla versione da SystemVersion.plist :

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

Puoi usare head , tail o awk per un'ulteriore analisi, ad esempio per ottenere ProductVersion , prova ad aggiungere:

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

Ecco l'approccio alternativo:

egrep "<string|key>" /System/Library/CoreServices/SystemVersion.plist | paste - - 
    
risposta data 05.05.2015 - 00:18
fonte

Leggi altre domande sui tag