¿Cómo verificar la versión de OS X instalada desde la línea de comandos en cada partición?

4

Estoy administrando una gran cantidad de Mac y cada máquina tiene varias particiones con diferentes versiones de sistema operativo.

Me gustaría crear un script que pudiera ejecutar para hacer un inventario de todas las particiones de todas las máquinas y tomar nota de qué sistema operativo está instalado en cada partición.

En la partición activa, sería fácil obtenerla a través del comando sw_vers . Pero ¿qué pasa con una partición diferente?

    
pregunta icasimpan 10.02.2012 - 10:05

3 respuestas

3

El siguiente comando le dará la versión de OS X instalada en volumeName :

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

Para obtener una lista de la versión del sistema operativo de cada volumen, necesita un script simple que obtenga una lista de volúmenes, busque en cada SystemVersion.plist e informe de los que se encuentren.

Encontré un script en Sugerencias de Mac OS X , por Hal Itosis, eso sí solo eso (replanteado abajo para su conveniencia).

#!/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
    
respondido por el joelseph 10.02.2012 - 16:22
2

Puede usar el comando diskutil en el terminal, que, en términos generales, ofrece la posibilidad de realizar scripts y realizar las mismas acciones que puede realizar en la versión de la GUI.

Usando esto, es posible crear un script que rastree la información que necesita, pero debe tener cuidado al especificar qué discos mira: si realiza una comprobación general de todos los discos, obtendrá imágenes de disco y todas las clases están incluidas si no tiene cuidado, además terminará con las particiones de recuperación, etc.

Además, la utilidad de disco solo proporciona el formato de partición, aunque eso le da una pista sobre lo que puede buscar posteriormente, es decir, busque un archivo llamado "mach_kernel" y es probable que tenga OS X, que tenga un directorio "/ windows" ... etc, etc., incluso entonces encontrará particiones que están formateadas en formatos Mac o Win sin un sistema operativo instalado, por lo que no es una tarea trivial. Si sabe dónde están los registros del instalador de OSX / Windows, puede insertar tal lógica como para extraer un nivel de Service Pack, o un nivel de parche, etc., pero todavía no puedo averiguar cómo hacerlo.

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$ 

Poner todo esto junto en un bucle adecuado que identifica todos los discos en los que está interesado, eliminando imágenes de discos, memorias USB, etc., y configurando para ejecutarse de forma remota a través de SSH o lo que sea ... se deja como un ejercicio para los interesados ...

    
respondido por el stuffe 10.02.2012 - 13:16
2

Aquí hay un ejemplo de una línea que obtiene la información de la versión de SystemVersion.plist :

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

Puede usar head , tail o awk para un análisis adicional, por ejemplo, para obtener ProductVersion , intente agregar:

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

Aquí está el enfoque alternativo:

egrep "<string|key>" /System/Library/CoreServices/SystemVersion.plist | paste - - 
    
respondido por el kenorb 05.05.2015 - 00:18

Lea otras preguntas en las etiquetas