Типовые задачи файловой инвентаризации решаются в Зодиак.АйТиЭм при помощи механизма скриптов с возвращаемым результатом. Такой подход позволяет достичь максимальной гибкости при настройке алгоритма инвентаризации и избежать чрезмерного расходования трафика на доставку излишне подробного результата.
Максимально локализуйте область поиска и состав атрибутов файлов, возвращаемых на сервер.
Наиболее удобными для проведения файловой инвентаризации на ОС семейства Windows являются скрипты на языке PowerShell. Командлет Get-ChildItem содержит большое количество опций, позволяющих управлять составом своего результата.
Документация по командлету
Get-ChildItemдоступна на официальном сайте Microsoft.
Ниже приведен пример скрипта с выделенными конфигурационными переменными, позволяющими настроить его поведение для требуемого сценария. С параметрами по-умолчанию скрипт производит рекурсивный поиск всех исполняемых файлов в папке C:\Program Files\ со сбором т.н. версионной информации о файлах.
Версионная информация файла - это набор атрибутов, содержащихся в заголовках исполняемых файлов и файлов-библиотек для ОС семейства Windows. Этот набор атрибутов задается разработчиками на этапе создания файла и не меняется при переменованиях и перемещениях файла. Данный набор атрибутов может использоваться для определения версии файла, принадлежности к тому или иному продукту, оригинального имени файла, и пр.
# Скрипт проводит поиск файлов в заданной папке с учетом настроек.
# Возвращает массив объектов (объект - на каждый файл) вида:
# @{
# 'Name' = 'имя файла'
# 'Path' = 'путь до файла'
# 'OriginalName' = '(опционально из FileVersionInfo)'
# 'Description' = '(опционально из FileVersionInfo)'
# 'FileVersion' = '(опционально из FileVersionInfo)'
# 'ProductVersion' = '(опционально из FileVersionInfo)'
# 'ProductName' = '(опционально из FileVersionInfo)'
# }
# ----- Настройки поиска ----- #
# Папка
$folder = 'C:\Program Files\';
# Признак поиска во вложенных папках
$recursive = $true;
# Фильтр
$filter = '*.exe';
# Максимальное число возвращаемых файлов
$amount = 50;
# Признак включения полей из FileVersionInfo
$includeFileVersionInfo = $true;
# ----- Алгоритм ----- #
if ($recursive) {
$items = Get-ChildItem -Path $folder -Filter $filter -Recurse | Select-Object -First $amount
}
else {
$items = Get-ChildItem -Path $fullPath | Select-Object -First $amount;
}
$files = @();
foreach ($item in $items) {
$file = @{
Name = $item.Name;
Path = $item.FullName;
}
if ($includeFileVersionInfo) {
$versionInfo = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($item.FullName);
$file.OriginalName = $versionInfo.OriginalFilename;
$file.Description = $versionInfo.FileDescription;
$file.FileVersion = $versionInfo.FileVersion;
$file.ProductVersion = $versionInfo.ProductVersion;
$file.ProductName = $versionInfo.ProductName;
}
$files += $file;
}
$files
Настройка данного скрипта производится стандартным способом - через элемент директивы Скрипт PowerShell. В настройках элемента директивы Вы можете задать регулярность запуска скрипта, триггеры запуска и другие стандартные атрибуты.
Для настройки доставки результатов инвентаризации на серверы Зодиак.АйТиЭм переведите переключатель "Результат" во включенное положение и добавьте следующие свойства:
Обязательные свойства
Собираются скриптом вне зависимости от значений конфигурационных параметров
NamePathОпциональные свойства
Собираются скриптом при задании параметра $includeFileVersionInfo = $true;
OriginalNameDescriptionFileVersionProductVersionProductNameНаиболее привычными для Администраторов ОС семейства Linux являются Shell-скрипты.
Интерпретаторы Shell-скриптов в ОС семейства Linux не содержат логики поиска и перечисления файлов. Для данных задач используются консольные утилиты, запускаемые из скриптов.
В приведенном ниже примере используется утилита find, доступная в подавляющем большинстве дистрибутивов Linux.
Документация по утилите
findдоступна на портале системных руководств OpenNet.
Ниже приведен пример скрипта с выделенными конфигурационными переменными, позволяющими настроить его поведение для требуемого сценария. С параметрами по-умолчанию скрипт производит рекурсивный поиск всех исполняемых файлов в папке /usr/lib/libreoffice/.
В ОС семейства Linux отсутствует понятие версионной информации о файле. Поэтому идентификация файла осуществляется только по его имени и пути.
# Скрипт проводит поиск файлов в заданной папке с учетом настроек.
# Для каждого найденного файла:
# - свойства выводятся каждое отдельной строкой в формате env
# - список свойств отделяется пустой строкой
# ----- Настройки поиска ----- #
# Папка
path="/usr/lib/libreoffice/"
# Разрешения
perm="-u=x,g=x,o=x"
# ----- Алгоритм ----- #
find -L $path -type f -perm $perm 2>/dev/null |
while read -r line
do
fname=$line
xpath=${fname%/*}
xbase=${fname##*/}
echo "path: $xpath"
echo "name: $xbase"
echo ""
done
Настройка данного скрипта производится стандартным способом - через элемент директивы Скрипт SH. В настройках элемента директивы Вы можете задать регулярность запуска скрипта, триггеры запуска и другие стандартные атрибуты.
Для настройки доставки результатов инвентаризации на серверы Зодиак.АйТиЭм переведите переключатель "Результат" во включенное положение и добавьте следующие свойства:
namepath