1 votos

¿Cómo obtener UUID con Python?

System Report mostrará el UUID de hardware del sistema en el formato 01234567-89ab-cdef-0123-456789abcdef.

Usando el shell podemos recuperar el mismo UUID:

ioreg -rd1 -c IOPlatformExpertDevice | grep -E '(UUID)'

¿Es posible obtener este UUID en Python sin recurrir a la ejecución de un comando shell?

1voto

frogor Puntos 11

Soy capaz de hacerlo, pero uso pyobjc como se ve aquí:

https://gist.github.com/pudquick/c7dd1262bd81a32663f0

import objc
from Foundation import NSBundle

IOKit_bundle = NSBundle.bundleWithIdentifier_('com.apple.framework.IOKit')

functions = [("IOServiceGetMatchingService", b"II@"),
             ("IOServiceMatching", b"@*"),
             ("IORegistryEntryCreateCFProperty", b"@I@@I"),
            ]

objc.loadBundleFunctions(IOKit_bundle, globals(), functions)

def io_key(keyname):
    return IORegistryEntryCreateCFProperty(IOServiceGetMatchingService(0, IOServiceMatching("IOPlatformExpertDevice".encode("utf-8"))), keyname, None, 0)

def get_hardware_uuid():
    return io_key("IOPlatformUUID".encode("utf-8"))

Si tu objetivo de uso es el sistema python de macOS, afortunadamente Apple ya incluyó pyobjc con cada versión reciente de macOS.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X