Программа инвентаризации компьютеров

WMI и Powershell

В WinNT 4.0SP4 администраторы получили новый инструмент для централизованного управления и слежения за работой различных частей операционной системы — WMI (Windows Management Instrumentation, Инструментарий для Управления Windows). Правда, в первых версиях заложенных компонентов было немного (всего 15). Но в последующих Win2k+ их количество увеличивалось вместе с возможностями. Сегодня WMI доступен для всех версий ОС Windows, включая Se7en. Опрашивая различные WMIклассы локальной и удаленных систем, мы можем получить всю необходимую информацию по имеющемуся в компании программному обеспечению и оборудованию.

В примерах предлагаю не использовать VBScript, JScript или другие скриптовые языки, уж слишком они громоздки и неудобны, тем более у нас уже есть роскошный PowerShell, способный выполнить за нас львиную долю работы (подробнее о PS читай в ][ 09.2009 и 05.2010).
Для начала получим список BIOS на подчиненных компьютерах:

PS> Get-WMIObject Win32_BIOS
-computerName synack.ru

Как ты понимаешь, после ‘-computerName’ указывается имя хоста. Хотя при опросе локальной системы этот параметр можно опускать, что мы и будем делать в дальнейшем для краткости. Написав простенький скрипт, легко передать Get-WMIObject список систем, с которых будет собираться информация. Результат при необходимости сохраняем в текстовый файл для дальнейшего анализа.

Аналогично проводим опрос остальных параметров. Например, запрашиваем информацию о CPU:

PS> Get-WMIObject Win32_Processor

Полный список данных, как правило, не нужен, поэтому отбираем только необходимые параметры:

PS> Get-WmiObject Win32_ComputerSystem | Select Manufacturer, Model

Посмотрим, какая у нас материнская плата:

PS> Win32_Baseboard | Select Manufacturer, Name, Product | ft -a

Классы Win32_ComputerSystem, Win32_ComputerSystemProduct и Win32_ OperatingSystem позволят собрать общие данные по компьютеру и системе:

PS> «127.0.0.1», «synack.ru», «pc01» | Check-Online |
Foreach-Object { Get-WMIObject
Win32_ComputerSystem -computerName
$_ }

Запрашиваем версию ОС:

PS> Get-WmiObject Win32_OperatingSystem | Select CSName,Buil
dNumber,ServicePackMajorVersion

При желании результат можно сохранить в файл, например «Export-CliXML C:\check.xml», а затем отфильтровать или обработать:

PS> Import-CliXML C:\check.xml |
Out-GridView

Полный список Win32_* классов и свойств доступен в документации MSDN «Win32_Classes» (http://msdn.microsoft.com/en-us/library/ aa394084%28v=VS.85%29.aspx). Альтернативный вариант — воспользоваться функцией поиска.

К примеру, просмотрим список объектов, в именах которых присутствует слово disk:

PS> Get-WmiObject -List | where {$_.
name -match «disk»}

Готовые утилиты и приложения

Если хорошо поискать в интернете, можно найти не один десяток готовых WMI-скриптов на самых разных языках программирования, которые легко адаптируются под твои нужды.

Мое внимание привлекло HTA-приложение Hardware Inventory (www.robvanderwoude.com/hardware.php) с веб-оболочкой. Просто вводим имя компьютера и получаем данные об установленном оборудовании. При необходимости можно отредактировать сырец в текстовом редакторе, дополнив его нужными параметрами (опрос WMI-объектов реализован на VBScript).

Сторонними разработчиками создан ряд специальных командлетов, упрощающих написание скриптов. Скрипт Computer Inventory Script (CompInv), который доступен на сайте powershellpro.com, позволяет получить информацию о железе, ОС и сохранить все собранные данные в Excel’евский файл для дальнейшего анализа. После запуска скрипт задаст несколько вопросов, отвечая на которые, админ выбирает режим сбора данных. Список компьютеров для проверки определяется при помощи специального текстового файла, также скрипт может автоматически проверить все системы или серверы, входящие в домен. Как вариант — имя компьютера задается вручную. По умолчанию используется текущая учетная запись, но, ответив «Yes» на вопрос «Would you like to use an alternative credential?», можно указать требуемую учетную запись.

Чтобы затем не запускать созданный скрипт самостоятельно, поручим это SchTasks. Например:

В результате создается задание с названием CheckScript, которое будет ежедневно выполнять PS-скрипт check.ps1, причем с наивысшим приоритетом. Вместе с системой инвентаризации оборудования и установленных приложений NetPoint (www.neutex.net) предлагается набор PS-скриптов (GetNet*), предназначенных как раз для сбора определенного типа данных о подчиненных системах. Например, просмотрим наличие свободного места на харде:

PS> Get-NetLogicalDisk -DriveType «Local Disk»
| where { $_.FreeSpace / $_.Size -lt .10 } | % {
$_.ComputerSystemName }

Теперь попробуем собрать информацию об установленных программах:

PS> Get-NetProgram -System synack.ru -Uninstalled $False
| % { $_.DisplayName } | sort -unique

Всего в поставку входит 20 командлетов. Доступна бесплатная версия NetPoint Express Edition, которая работает в 32/64-битных WinXP/2k3/2k8/Vista/Se7en, ее можно применять в сетях любого размера. Для установки NetPoint понадобится наличие PS 2.0, IIS и SQL-сервера (достаточно Express Edition).

Кстати, список установленных программ можно получить, просто прочитав нужную ветку реестра:

Командлет Out-GridView выводит данные в отдельном окне с возможностью поиска и сортировки.

Система инвентаризации Myzci

Многие, кто пробовал систему инвентаризации zCI (zci.sf.net), находили ее довольно удачным решением, но ей не хватало возможности заносить данные вручную и локализованного интерфейса.

Конечно, это не критические моменты, но есть и другие мелочи. Например, нельзя удалить устройство через веб-интерфейс — необходимо вручную составить SQL-запрос на очистку данных из таблиц. Система инвентаризации MyZCI (sf.net/projects/myzci) является форком zCI. Разработкой занимается Юрий Винник, он довел zCI до нужных кондиций: интерфейс переведен на русский и украинский языки, добавлены новые поля в таблицы (например, размещение компьютера) и упрощено управление.

Для работы MyZCI потребуется любой вебсервер с поддержкой PHP (с PECL, PHP Extension Community Library) и MySQL.

Распаковываем архив myzci-1.2.1.zip в корневой каталог веб-сервера и в файле zciconfig.php указываем параметры доступа к MySQL:

$ sudo nano zciconfig.php
return dbx_connect(DBX_MYSQL,»local
host»,»zci»,»zci»,»passwd»);

Чтобы создать таблицы в БД, используем скрипт mysqlscript.sql, находящийся в каталоге engine. Записи внутри нужно привести в соответствие с данными:

$ sudo nano mysqlscript.sql
create database zci;

grant all on zci.* to
‘zci’@’localhost’ identified by
‘passwd’;
# Если не планируется доступ к БД с
других систем, последнюю строку комментируем
# grant select,delete,insert,update
on zci.* to ‘zci’@’%’ identified by
‘zci’;

Локализация интерфейса производится установкой переменной “$Lang” в значение “ru” в файле langconfig.php.

Для сбора информации в Windows-системе используется Windows Script Host, в Linux — lshwclient на Java. Все компоненты находятся в подкаталоге add-ons и engine. Здесь же лежат MS Windows Scripting Host 5.6 и MS WMI Core 1.5, которые необходимы для работы клиентской части в Win95/98/NT4. Перед развертыванием в файлах takedata.js и lshwclient.java следует изменить значение переменной MyZCIpath и MyZCIserver, чтобы она указывала URL сервера.

Процесс настройки клиентской части на конечных системах упрощен. Так, скрипт install.sh, используемый при установке в Linux, проверяет наличие пакетов lshw, jdk и read-edid (инфа о мониторе) и при их отсутствии выдает пояснительное сообщение. Далее происходит сборка Java-клиента и установка задания cron. После развертывания MyZCI нужно подключиться к серверу с удаленной системы и зарегистрировать компьютер, нажав соответствующую ссылку на главной странице. Информация о новой системе должна появиться в базе MyZCI. Скачиваем с главной страницы архив с клиентской частью и запускаем установщик.

После чего скрипты начнут отсылать данные на сервер. Интерфейс предельно прост и позволяет выводить детальную информацию о железе, вносить и редактировать данные о компьютерах, группировать, искать системы по определенному критерию (например, тип видеокарты и монитор), отслеживать изменения.

Меню администратора позволяет определять статус (закреплен, аренда) и местонахождение системы.

Система OCS Inventory NG

Решение OCS Inventory NG (OCSNG, Open Computers and Software Inventory New Generation, ocsinventory-ng.org) позволяет произвести инвентаризацию комплектующих и программного обеспечения, установленных на компьютерах в локальной сети, и отслеживать их изменения, периодически получая данные о конфигурации систем. Еще одной полезной функцией является возможность удаленной установки программ и выполнения команд. Для сбора информации на клиентские компьютеры устанавливается программа-агент.
Агент доступен практически для всех версий Windows от 95 до 2k8R2, Linux, Mac OS X, *BSD, Solaris, IBM AIX и HP-UX. Все собранные данные агенты отправляют на сервер управления (management server) в виде XML-потока, сжатого при помощи библиотеки Zlib. Для передачи используется стандартный протокол HTTP/HTTPS, поэтому проблем с firewall’ом обычно не возникает. При помощи агентов реализована функция «IP discovery», которая помогает находить все сетевые и периферийные устройства, работающие в локалке, в том числе те, на которые нельзя установить агента (свитчи, принтеры, web-камеры и т.д.) Агенты сканируют сеть в поисках подобных устройств и отправляют сведения о них на сервер для анализа.

Версия для Windows написана на C++, *nix вариант — на Perl и С.

Серверная часть OCSNG включает в себя четыре компонента, которые необязательно должны быть установлены на одном сервере. Это СУБД (MySQL) для сбора данных, а также вебсервер, который может играть одну из трех ролей:

  • Служба связи — обеспечивает связь по протоколу HTTP между сервером базы данных и программами-агентами (Apache 1.3.X/2.X с интегрированным Perl, в Debian/Ubuntu пакет libapache-dbi-perl);
  • Служба развертывания — хранение установочных файлов программ-агентов (любой веб-сервер с поддержкой SSL);
  • Консоль управления — просмотр собранных данных в браузере (веб-сервер с поддержкой PHP с ZIP и GD).

Серверная часть OCSNG может быть установлена на компьютер, работающий под управлением Win2k/XP/2k3, Linux, *BSD, Solaris, IBM AIX и MacOS X.

Установка Ocsng

Нужный пакет имеется в репозиториях большинства дистрибутивов, хотя обычно это не самая актуальная версия. Самостоятельная сборка из исходных текстов при внимательном подходе не должна вызвать трудностей. Установочный скрипт setup.sh, находящийся внутри архива, проверит наличие требуемых компонентов и выдаст рекомендации по устранению проблем, если в этом будет необходимость.
В Debian/Ubuntu для ручной сборки нужно накатить пакеты:

И XML::Entities из хранилища CPAN:

$ sudo cpan -i XML::Entities

В процессе установки будут созданы все необходимые конфигурационные файлы и алиасы для веб-сервера. Так как файлы, которые могут распространяться при помощи OCSNG, часто имеют большой размер, следует установить нужные значения переменных post_max_size и upload_max_filesize в файлах /etc/php5/apache2/php.ini (по умолчанию — 8 и 2 Мб) и ocsinventory-reports.conf. После всех настроек вызываем браузер и запускаем установочный скрипт http://localhost/ocsreports/install.php, где указываем параметры доступа к БД. В процессе установки для доступа к базе ocsweb будет создана учетная запись «ocs» с паролем «ocs». Если доступ к базе не ограничен локальной системой, в целях безопасности дефолтный пароль следует изменить. Для установки агента в Linux потребуется наличие некоторых модулей Perl (XML и Zlib) и dmidecode.

После чего агент устанавливается стандартным для Perl’овых приложений способом:

$ tar xzvf Ocsinventory-Agent-1.1.2.tar.gz
$ cd Ocsinventory-Agent-1.1.2
$ perl Makefile.PL
$ make
$ sudo make install

Далее скрипт начнет задавать ряд вопросов по размещению конфигурационных файлов. Вводим данные сервера, создаем тэг (для группировки систем), активируем задачу для cron. По окончании настройки собранные данные о конфигурации компьютера отправляются на сервер. Если связь установлена и получаем ответ «Success!», установку агента можно считать законченной. Его данные появятся в веб-консоли, в разделе «Все компьютеры «. В каталоге /var/lib/ocsinventory-agent будет создан XML-файл, содержащий текущую конфигурацию компьютера. Если же соединения не произошло, запусти агент в режиме отладки:

$ ocsinventory-agent -l /tmp –debug —server http://ocsng-server/ocsinventory

Обычно полученной информации хватает для диагностики ошибок. Агент для Windows может быть установлен несколькими способами. Самый простой — вручную или с помощью прилагающегося logon скрипта.

После инсталляции сервера установочный файл агента можно импортировать в базу OCSNG. Просто выбираем вкладку «Агент» и указываем месторасположение файла, после чего он будет доступен с любого компьютера сети. Установка стандартна: на последнем этапе сообщаем имя или IP-адрес OCSNG сервера, и, чтобы сразу же сформировать и отправить отчет, устанавливаем флажок «Immediately launch inventory». Далее агент прописывается в автозагрузку и стартует в качестве сервиса.

Работа с интерфейсом OCSNG

Интерфейс локализован, поэтому, чтобы разобраться с его использованием, много времени не понадобится. По умолчанию на вкладке «Все компьютеры » показаны семь основных характеристик клиентских машин.

Список «Add column» позволяет легко добавить еще до 23 полей. Очень удобно, что данные поддаются ручному редактированию. Также следует отметить легкий поиск и удаление дубликатов систем.

Как уже говорилось ранее, в OCSNG заложена возможность установки приложений и запуска скриптов (bat, vbs и т.п.) Такая функциональность сильно выручает. Создаем пакет в Deployment — Build и заполняем поля New package building: название, Priority (порядок установки) и действие в Action. Предусмотрено три варианта:

  • Store — копировать на целевую систему;
  • Execute — копировать и выполнить с командой;
  • Launch — копировать и запустить.

Параметры в User notifications позволяют вывести предупреждение пользователю и разрешить ему отменять задачу.

После создания пакета его следует активировать в Deployment — Activate. Вводим URL сервера и нажимаем «Отправить». Выбираем компьютер, на который будем устанавливать пакет, переходим в меню Customization и нажимаем ссылку Add package. Указываем пакет и запускаем процесс нажатием Affect. Состояние задачи выводится в Customization, общая статистика доступна в таблице Activate.

В OCSNG инициатором соединения выступает агент, который подключается к серверу раз в сутки, отправляет информацию о состоянии и получает задания. Если созданный пакет необходимо установить раньше, на клиенте следует принудительно запустить команду ocsinventory-agent.

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

Проект GLPI

GLPI (Gestion Libre de Parc Informatique, glpi-project.org) — еще один проект, который пользуется заслуженной популярностью у админов. Кроме задач по учету компьютеров и комплектующих, он позволяет хранить данные по остальному «хозяйству», включая расходные материалы. В отличие от OCSNG, администратор самостоятельно наполняет базу устройств, используя локализованный веб-интерфейс.
Но проблема эта решается за счет использования плагина, интегрирующего GLPI с OCSNG. Поэтому их часто устанавливают вместе. Для включения поддержки необходимо перейти в «Установки — Общие» и переключить «Активировать режим OCSNG» в значение «Да». После этого в меню появится новая вкладка «Режим OCSNG», в которой можно синхронизировать данные.

На основе GLPI легко организовать службу технической поддержки пользователей, что очень удобно, ведь вместо звонка юзер оставляет заявку, которая регистрируется системой. Затем IT-подразделение ее обрабатывает. Это дисциплинирует пользователей — они перестают звонить по мелочам, а у админов появляется база обращений для отчета о проделанной работе. Но возможности GLPI этим не ограничиваются. Он позволяет создать базу знаний, состоящую из статей, вести учет поставщиков, договоров. Система снабжена большим количеством самых разных отчетов с возможностью экспорта результата в файл формата PDF, CSV или SLK. Поддерживается синхронизация календаря по протоколам iCal, Webcal.

Функци ональность легко расширяется за счет плагинов, доступных на сайте проекта (plugins.glpi-project.org). Кроме OCSNG можно импортировать данные с сервера Cacti или Nagios.

Пакет GLPI имеется в репозитариях основных *nix дистрибутивов. Установка при помощи исходных текстов стандартна для приложений, написанных на PHP и требующих наличия веб-сервера и MySQL.

Учет оборудования к установке

При строительстве объектов основных средств подрядным или хозяйственным способом застройщик самостоятельно приобретает оборудование, требующее монтажа, с целью его установки в строящихся объектах.

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

Для учета оборудования, требующего монтажа (оборудование к установке), предусмот­рены следующие унифицированные формы первичной учетной документации:

— акт о приеме (поступлении) оборудования (форма № ОС – 14) используется для оформления и учета поступившего на склад оборудования с целью последующего использования его в качестве объекта основных средств. Акт составляется в двух экземплярах и подписывается комиссией, назначаемой приказом руководителя организации для осмотра и приемки оборудования.

В акте комиссия указывает свои выводы насчет состояния оборудования и возможности его оприходования (принятия к бухгалтерскому учету). К акту прилагаются сопроводительные документы (технический паспорт, инструкция по эксплуатации, транспортная наклад­ная и др.). Акт утверждается руководителем организации или уполномоченным им лицом;

— акт о приеме-передаче оборудования в монтаж (форма № ОС – 15) составляется в случае, когда оборудование для монтажа передается монтажной организации, и ранее, при приемке оборудования, представитель монтажной организации не участвовал. Акт составляется в двух экземплярах, первый из которых передается в бухгалтерию, второй экземпляр акта передается монтажной организации вместе с оборудованием;

— акт о выявленных дефектах оборудования (форма № ОС – 16) составляется при выявлении дефектов оборудования в процессе его монтажа, наладки или испытания, а также по результатам контроля.

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

Зачисление смонтированного и готового к эксплуатации оборудования в состав основных средств организации оформляется в установленном порядке актом о приеме-передаче объекта основных средств (кроме зданий, сооружений) (форма № OC – 1) или актом о приеме-передаче групп объектов основных средств (кроме зданий и сооружений) (форма ОС – 1б).

Учет оборудования, требующего монтажа, осуществляется на счете 07 «Оборудование к установке». Счет балансовый, основной, инвентарный, материальный, сальдовый, активный.

Дт 07 Кт
Сн – величина оборудования к установке на начало периода
Об: Фактические затраты, связанные с приобретением оборудования к установке Об: Передача оборудования в монтаж
Ск – величина оборудования к установке на конец периода
Дебет Кредит Содержание хозяйственных операций (первичный документ, основание)
Отражена стоимость приобретенного оборудования (товарная накладная, акт о приеме (поступлении) оборудования)
Отражена сумма НДС (счет–фактура)
Отражена стоимость доставки оборудования (акт оказанных услуг)
Отражена сумма НДС (счет–фактура)
Отражена стоимость доставки собственным автотранспортом организации (бухгалтерские справки)
08/3 Передано в монтаж оборудование к установке (акт о приеме-передаче оборудования в монтаж)
08/3 Отражена стоимость монтажных работ подрядной организацией (акт выполненных работ)
Отражена сумма НДС (счет–фактура)
08/3 10, 70, 69, 23 Отражены работы по монтажу оборудования собственными силами организации (лимитно–заборная карта, требования–накладные, наряды на сдельную работу, расчетные ведомости, ведомости начисления страховых взносов, бухгалтерские справки)
08/3 Принят к учету объект основных средств, в состав которого входит оборудование к установке (акт о приеме–передаче зданий, сооружений или акт о приеме–передаче объекта основных средств)
Возмещен НДС из бюджета (бухгалтерская справка)

При автоматизированной форме ведения учета регистрами аналитического учета являются карточка счета 07, анализ счета 07 по субконто. Регистрами синтетического учета являются журнал–ордер и ведомость по счету 07, анализ счета 07, обороты счета (главная книга).

Стоимость оборудования, требующего монтажа, отражается в I разделе бухгалтерского баланса по строке 1190 «Прочие внеоборотные активы».

Учет основных средств

Нормативные документы:

1. НК РФ часть II от 05.08.2000, №117-ФЗ;

2. ФЗ «О финансовой аренде (лизинге)» от 29.10.98, №164-н;

3. ПБУ 6/01 «Учет основных средств» от 30.03.2001, №26н;

4. Приказ Минфина РФ «Об утверждении Методических указаний по бухгалтерскому учету основных средств» от 13.10.2003, №91н;

5. Общероссийский классификатор основных фондов, утвержденный постановлением Госстандарта РФ от 26.12.94, №359;

6. Классификация основных средств, включаемых в амортизационные группы, утвержденная постановлением Правительства РФ от 01.01.2002, №1;

7. Постановление Госкомстата РФ «Об утверждении унифицированных форм первичных учетных документов по учету основных средств» от 21.01.2003, №7;

8. Методические указания по инвентаризации имущества и финансовых обязательств от 13.06.95, №49.

Оставьте комментарий