Эквивалентная библиотека/модуль Python для node-machine-id?
Я ищу эквивалентную библиотеку/модуль python для node-machine-id
Я хочу однозначно идентифицировать каждый рабочий стол/устройство, получить этот UUID и отправить в БД. Я могу добиться этой конкретной вещи в javascript с кодом ниже
import pkg from 'node-machine-id';
const {machineIdSync} = pkg;
let id = machineIdSync();
console.log(id)
или же
let ida = machineIdSync({original: true})
console.log(ida)
Я знаю, что python имеет встроенный модуль uuid, но этот идентификатор является переменным, мне нужен только уникальный идентификатор компьютера, как я смог сделать с идентификатором узла-машины. Спасибо!
1 ответ
Я написал небольшой кроссплатформенный пакет PyPI, который запрашивает собственный GUID машины, который называется machineid. Это очень похоже наnode-machine-id
Пакет узла.
По сути, это выглядит как взрыв кода, но с некоторыми специфичными для Windows запросами реестра WMI для еще более точного идентификатора на компьютерах с Windows.
В пакете также есть поддержка анонимизации идентификатора с помощью хеширования.
import subprocess
import sys
def run(cmd):
try:
return subprocess.run(cmd, shell=True, capture_output=True, check=True, encoding="utf-8") \
.stdout \
.strip()
except:
return None
def guid():
if sys.platform == 'darwin':
return run(
"ioreg -d2 -c IOPlatformExpertDevice | awk -F\\\" '/IOPlatformUUID/{print $(NF-1)}'",
)
if sys.platform == 'win32' or sys.platform == 'cygwin' or sys.platform == 'msys':
return run('wmic csproduct get uuid').split('\n')[2] \
.strip()
if sys.platform.startswith('linux'):
return run('cat /var/lib/dbus/machine-id') or \
run('cat /etc/machine-id')
if sys.platform.startswith('openbsd') or sys.platform.startswith('freebsd'):
return run('cat /etc/hostid') or \
run('kenv -q smbios.system.uuid')
Открыты для обратной связи и PR!