Вопрос или проблема
Я хочу найти производителя, модель и серийный номер различных машин под управлением Windows (XP, Vista, 2003, 2008) и Linux (Ubuntu, Debian, Fedora) с помощью программного решения.
В настоящее время наш инвентаризационный учет оборудования устарел, поэтому я хотел бы получить эту информацию быстро и без лишних затрат с помощью программного решения (чтобы мне не нужно было подходить к каждому компьютеру, чтобы прочитать наклейку).
Я хотел бы написать скрипт, так что, в идеале, он не требует сторонних приложений; если это необходимо, то лучше, чтобы это было автономное приложение, которое легко перемещать.
Есть идеи, как это можно сделать лучше всего? Если есть предустановленное (бесплатное) решение, то в идеале я хотел бы, чтобы оно отправляло данные либо в виде сырого текста, либо в базу данных MySQL. Идеально, если это будет небольшой автономный инструмент, я не хочу устанавливать программы на каждом ПК. Тем не менее, как уже упоминалось ранее, я совершенно не против написать скрипт, используя встроенные инструменты ОС. Я знаю, что это возможно, так как видел другие приложения, которые сообщают эту информацию (хотя и в больших массовых пакетах с другими ненужными вещами, например, Spiceworks).
Для Windows вы можете использовать быстрый скрипт PowerShell для обертывания WMI, что-то вроде этого:
function Get-Inventory([string] $computer=".")
{
$data = ""|select name, vendor, model, serial
$bios = get-wmiobject 'win32_BIOS' -computername $computer
$comp = get-wmiobject 'win32_computersystem' -computername $computer
$data.name = $comp.Name
$data.vendor = $comp.manufacturer
$data.model = $comp.Model
$data.serial = $bios.SerialNumber
return $data
}
Если вы подадите этому текстовый файл со списком всех своих компьютеров, как этот:
get-content 'mycomputers.txt' | foreach-object{Get-Inventory}
вы получите красивую таблицу компьютеров и деталей оборудования. Если вам нужно архивировать данные, используйте командлет export-csv, чтобы вывести результат прямо в файл.
Для Linux я бы посоветовал посмотреть на dmidecode, который довольно часто предустановлен или может быть легко установлен из репозитория дистрибутива.
Это сгенерирует отчет в простом текстовом формате о всем оборудовании в системе, включая серийные номера.
Существует отличное (хотя и коммерческое) решение, которое делает именно это (сырой текст будет в формате CSV, как я думаю), называемое ISI Snapshot: http://www.isiisi.com/snapshot.htm
Оно быстро получит всю эту информацию.
Я упоминаю об этом, потому что вы сказали “если есть предустановленное решение”….
Правка: Также посмотрите /proc/cpuinfo и lsattr -El sys0
Обратите внимание на SpiceWorks. SpiceWorks использует WMI и SSH для сбора этой информации с компьютеров под управлением Windows, Mac и Linux. Это не скрипт, а полное решение, включая локальную базу данных для того, что вы ищете здесь. По крайней мере, стоит на это обратить внимание.
Я думаю, вы можете использовать WMI для получения информации о Windows, вы можете получить информацию удаленно, если у вас есть права администраторов.
Для жестких дисков на Linux вы должны быть в состоянии использовать такой инструмент, как smartctl, включенный в библиотеку smartmontools, чтобы получить необходимую информацию. Например, вот что в настоящее время сообщает мой диск:
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar SE Serial ATA family
Device Model: WDC WD800JD-22LSA0
Serial Number: WD-XXXXXXXXXXXX (скрыто мною)
Firmware Version: 06.01D06
User Capacity: 80,026,361,856 bytes
Из этой информации вы можете довольно легко написать скрипт, чтобы отправить ее обратно, используя netcat на удаленный сервер, который добавит это в базу данных MySQL.
get-content ‘mycomputers.txt’ | foreach-object {Get-Inventory “$_” ft -autosize}
добавление для получения имени компьютера из текстового файла.
Ответ или решение
Поиск информации о производителе оборудования, модели и серийном номере
В современном мире управления ИТ-активами важно иметь точную информацию о наличии оборудования. В условиях постоянного обновления и замены техники, просто необходимо поддерживать актуальный инвентаризационный учет. Если у вас уже устарела информация о вашем оборудовании, существуют несколько программных решений для быстрого извлечения данных о производителе, модели и серийном номере для компьютеров под управлением Windows и Linux. В данной статье мы рассмотрим, как автоматизировать этот процесс с помощью скриптов, избегая необходимости устанавливать сторонние приложения на каждую машину.
1. Решение для Windows
Для извлечения информации о системе на компьютерах под управлением Windows вы можете воспользоваться PowerShell и WMI (Windows Management Instrumentation). Ниже приведен пример скрипта, который вы можете использовать:
function Get-Inventory([string] $computer=".")
{
$data = ""|select name, vendor, model, serial
$bios = get-wmiobject 'win32_BIOS' -computername $computer
$comp = get-wmiobject 'win32_computersystem' -computername $computer
$data.name = $comp.Name
$data.vendor = $comp.Manufacturer
$data.model = $comp.Model
$data.serial = $bios.SerialNumber
return $data
}
Для обработки списка компьютеров, который вы сможете сохранить в текстовом файле (например, mycomputers.txt
), используйте следующую команду:
get-content 'mycomputers.txt' | foreach-object {Get-Inventory}
Таким образом, вы создадите таблицу с данными о каждом компьютере. Для архивирования данных вы можете воспользоваться Export-Csv
:
get-content 'mycomputers.txt' | foreach-object {Get-Inventory} | Export-Csv -Path 'inventory.csv' -NoTypeInformation
2. Решение для Linux
Для извлечения информации о аппаратном обеспечении на системах Linux, таких как Ubuntu, Debian и Fedora, вы можете использовать утилиту dmidecode
, которая часто предустановлена или доступна в репозиториях дистрибуций. Она генерирует текстовый отчет о всех аппаратных компонентах, включая серийные номера. Для получения информации выполните следующую команду:
sudo dmidecode -t system
Это даст вам необходимую информацию о системе, такую как производитель, модель и серийный номер.
3. Работа с данными для хранения
Для записи полученных данных в базу данных MySQL вы можете создать простой скрипт на Bash или PowerShell, который будет считывать результаты из команд dmidecode
или вашего скрипта для Windows и отправлять их на ваш MySQL сервер с помощью mysql
команды из терминала.
Пример на Linux может выглядеть следующим образом:
#!/bin/bash
# Получаем информацию о системе
info=$(sudo dmidecode -t system)
# Разбор информации и отправка в MySQL
mysql -u ваш_пользователь -pваш_пароль -D ваша_база_данных -e "INSERT INTO inventarization (vendor, model, serial) VALUES ('$vendor', '$model', '$serial');"
Заключение
Используя приведенные выше методы, вы сможете эффективно собрать информацию о вашем оборудовании, избегая необходимости физического осмотра каждого устройства. Возможно, вам также будут интересны решения на базе существующих приложений, таких как Spiceworks, которые используют WMI и SSH для сбора информации с разных машин и имеют встроенный механизм для хранения данных. Однако, если вы предпочитаете независимые скрипты, описанные выше подходы будут для вас полезны и легки в реализации.
Эти шаги помогут вам быстро и эффективно обновить запас данных об оборудовании и поддерживать вашу IT-инфраструктуру в актуальном состоянии.