Как определить устройство (Linux, Unix(s))
Все
Я хочу получить идею или метод для идентификации устройства.
Мои устройства работают в среде linux, aix, hp-ux, solaris(включая sparc).
Как определить устройство?
Я попытался использовать команду ('dmidecode') для отслеживания CPU-ID, информацию базовой платы для отслеживания устройства в качестве идентификатора без MAC-адреса, который будет изменен при смене сетевых адаптеров. но в unix(s) нет команды, а также у меня было ограничение на установку пакета.
как решить это в моей родной среде?
Спасибо за чтение.
1 ответ
Прежде всего, проблема с попыткой идентифицировать компьютер через его аппаратное обеспечение, конечно же, всегда заключается в том, что идентификатор будет меняться, как только вы меняете аппаратное обеспечение. Эта проблема не ограничивается сетевой картой.
Вы можете, например, grep идентификатор продукта и серийный номер материнской платы
$sudo lshw | grep Motherboard -A 6
description: Motherboard
product: <...>
vendor: LENOVO
physical id: 0
version: Not Defined
serial: <...>
slot: Not Available
но как только вы поменяете материнскую плату, она изменится.
Хорошей идеей будет взглянуть на то, как другие обошли эту проблему, например, как Microsoft сделала это в своей активации Windows (WPA) в Windows XP. Согласно вышеупомянутому веб-сайту, они начали с проверки десяти категорий оборудования:
- Адаптер дисплея
- SCSI адаптер
- Адаптер IDE (эффективно материнская плата)
- Сетевой адаптер (NIC) и его MAC-адрес
- Диапазон объема оперативной памяти (т. Е. 0–64 МБ, 64–128 МБ и т. Д.)
- Тип процессора
- Серийный номер процессора
- Устройство жесткого диска
- Серийный номер тома жесткого диска (VSN)
- CD-ROM / CD-RW / DVD-ROM
Впоследствии они взяли первое найденное устройство в каждой категории и создали уникальный идентификатор на основе этих десяти устройств. Например, вы можете сгенерировать такой уникальный идентификатор с помощью хеш-функции.
Чтобы этот идентификатор не стал недействительным при изменении некоторых аппаратных средств, WPA проверяет, является ли оборудование практически одинаковым; он "просит десять категорий голосовать". Например, вы могли бы реализовать, чтобы как минимум семь из десяти устройств были одинаковыми, чтобы "пройти тест".