Другие языки программирования и технологии

Есть ли способ программно разлечить компьютерное железо, по какому либо коду материнки или другими способами.

Здравствуйте. У меня довольно непростой вопрос, исходя из того что он связан с серверным железом. Грубо говоря у меня есть 4 сервера, которые посредством спец оборудования, загружаются все, грубо говоря с одного жесткого диска и у них на всех одна ос, соответственно и на все серваке идут абсолютно идентичные параметры загрузки. Суть вопроса которым я задался заключается в том что эти серваке хоть и загружаются с 1 ос (linux) должны выполнять разные функции в зависимости от того компьютера на котором они загружены. Я столкнулся с нехваткой знания так как стал тупик на вопросе о том как операционная система должна определять На какой машине она загрузилась. Как вариант у меня была Мысль о том чтобы сделать скрипт который проверяет mac-адрес сетевого интерфейса и допустим если он совпадает она запускает одну задачу если совпадает с другой машины запускает другую задачу. Однако я задался вопросом Существуют ли способы попроще. Возможно у материнской платы тоже есть что-то наподобие Мак адреса. Если есть Подскажите как он называется чтобы я хотя бы знал На какую тему гуглить.
Проще всего - различать их по MAC-адресу адаптера, если все 4 загружаются с одного жёсткого и по сути идентичны, то катастрофы не случится, если между ними кто-то поменяет сетевые адаптеры местами.
А так-то у материнской платы есть серийный номер, но часто он "To be filled by O.E.M.", потому на него лучше не полагаться) Сейчас проверил на двух случайно выбранных серверах, на одном из них номер есть (материнка там от intel), на другом - не заполнен (материнка от MSI)
АК
Алексей Копнин
85 828
Лучший ответ
Дмитрий Емяшев Спасибо. Серваки идентичные и на них невозможно ничего поменять так как это блэйд сервера. Корень проблемы заключается в том что это Blade сервера в которые вставляются 2.5 жесткие диски причём необычные а scsi доставать ьакие под 16 серваков очень дорого
Конечно есть. С этим прекрасно справляется AIDA64
Значит способ есть.
Дмитрий Зыбин
Дмитрий Зыбин
56 730
Erza Islamov "хоть и загружаются с 1 ос (linux)"
Кажется вы слишком усложняете задачу. Сделайте на сервере список в виде листа с именем машин в сети, задайте каждому имени свою задачу. Подойдет любой уникальный идентификатор который можно вытащить с помощью powershell,vbs,wmi и т. д.

По повожу определения железа.
Это не такая уж и сложная задача выполняемая на большинстве современных языках.
Если будете извлекать данные одним из языков которые вы знаете, то вот подсказка в виде классов
Win32 provider:Computer System Hardware Classes https:// docs.microsoft.com/en-us/windows/win32/cimwin32prov/computer-system-hardware-classes
Там есть Motherboard, Controller, and Port Classes из них можно вытащить любую инфу
Может быть в этом классе что нибудь найдете подходящее: https:// docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-computersystem
Можно сделать программу и скрипт. Вот вам библиотека на python готовая. https:// github.com/rdobson/python-hwinfo

В ссылках уберите пробелы после // антимпам ругался.
Ринат Муздыбаев Вот тебе ещё простая подсказка.
вывод информации последством wmi из класса baseboard
wmic baseboard get Manufacturer, Model, Name, PartNumber, serialnumber

Такую информацию легко получить удаленным способом с любой машины, нужны лишь некоторые разрешения в фаерволе.

Похожие вопросы