GUI-утилита для Windows: инвентаризация установленных пакетов на парке Linux/FreeBSD-серверов по SSH. Параллельный опрос, автоопределение дистрибутива и пакетного менеджера, отчёты в CSV/JSON/XLSX.
InventoryLinux is a Windows GUI tool (PowerShell 5.1 / WinForms) for IT infrastructure engineers: it inventories installed packages across fleets of Linux/FreeBSD servers over SSH in parallel, auto-detects the distribution and package manager (dpkg/rpm/pacman/apk/pkg) and produces CSV/JSON/XLSX reports.
- Список целей: одиночные IP, диапазоны (
10.0.0.5-10.0.0.20), CIDR (10.0.0.0/24), до 50000 адресов на запись. - Параллельный опрос (runspace pool, число потоков настраивается), пауза и остановка на ходу.
- Автоопределение ОС и пакетного менеджера: dpkg, rpm, pacman, apk, pkg. Проверено на Debian/Ubuntu/Astra, RHEL/CentOS/Oracle Linux/Rocky/Alma/RED OS/ROSA/ALT/openSUSE, Arch/Manjaro, Alpine, FreeBSD.
- Полный список пакетов или поиск по регулярному выражению (например,
nginx|docker|postgresql). - Пул паролей с перебором до первого подходящего и кэшем успешных подключений (по IP+логину).
- Отчёты: CSV, JSON и XLSX (лист Summary с подсветкой проблемных статусов + лист на каждый базовый дистрибутив), папки по дате скана, автоочистка старых отчётов.
- Экспорт/импорт списка серверов (CSV) для переноса между машинами.
- Windows с PowerShell 5.1 (поддерживается вплоть до Windows Server 2008 R2 с WMF 5.1).
- Модуль Posh-SSH - ставится автоматически при первом тесте/скане (нужен доступ к PowerShell Gallery); для XLSX-отчётов так же автоматически ставится ImportExcel, без него будут только CSV/JSON.
- На целевых серверах: доступ по SSH с парольной аутентификацией.
Вариант 1 - собрать один exe (переносится на целевую машину единственным файлом):
powershell -ExecutionPolicy Bypass -File .\Build-Exe.ps1Сборка использует модуль ps2exe (ставится автоматически, нужен интернет). Результат - InventoryLinux.exe рядом со скриптом.
Вариант 2 - запустить без сборки (файлы Inventory-Gui.ps1 и Common.ps1 должны лежать рядом):
powershell -ExecutionPolicy Bypass -File .\Inventory-Gui.ps1- Список серверов, настройки и пароли хранятся в профиле пользователя (
%LOCALAPPDATA%\InventoryLinux), рядом с exe никаких файлов не создаётся. - Пароли шифруются DPAPI (привязка к учётной записи Windows и машине) и не покидают компьютер. При переносе на другую машину или запуске под другим пользователем пароли нужно ввести заново - это свойство DPAPI, а не недоработка.
- Отчёты сохраняются в
Документы\InventoryLinux\<дата скана>\. - Пароли не логируются и не попадают в отчёты и экспорт списка серверов.
- Аутентификация только по паролю (поддержка SSH-ключей в планах).
- Для очень старых sshd (RHEL/CentOS 5.x и ровесники) современному SSH.NET может не хватить поддержки старых алгоритмов обмена ключами - проверяйте такие серверы кнопкой "Тест соединения".
- Учитывайте fail2ban/pam_tally на целевых серверах: большой пул паролей при большом числе потоков - это много неудачных попыток входа подряд.
- Exe, собранный ps2exe, может вызывать ложные срабатывания антивирусов - это известная особенность упаковщика. Исходный код открыт, exe воспроизводится из него одной командой.
| Файл | Назначение |
|---|---|
Inventory-Gui.ps1 |
Окно программы: весь UI и логика теста/скана |
Common.ps1 |
Движок: IP/CIDR, DPAPI-хранилище, SSH, runspace pool |
Build-Exe.ps1 |
Сборка обоих скриптов в один InventoryLinux.exe |
README.txt |
Инструкция пользователя, прикладывается к exe |
Ошибки, идеи и пожелания - через Issues репозитория. По возможности прикладывайте версию ОС, дистрибутив целевых серверов и текст из лога программы.
Проект развивается в свободное время. Если утилита сэкономила вам пару часов рутины - можно закинуть на кофе, чтобы разработчик держал аптайм:
yoomoney.ru/to/4100110210023035
На доступность и функциональность это никак не влияет - программа была и остаётся бесплатной под лицензией MIT.
This project uses free code signing provided by SignPath.io, certificate by SignPath Foundation.
Готовый InventoryLinux.exe публикуется в разделе Releases.