Автоматизация учета гарантий и характеристик в Snipe-IT ITAM: полное руководство по открытому интегратору
Как сисадминам и IT-отделам избавиться от ручных проверок и автоматически синхронизировать сроки гарантии Dell, Lenovo, HP, Apple и заводскую комплектацию (CPU, RAM, SSD) в Snipe-IT через открытый скрипт и CheckWarranty API.
Реальные скриншоты CheckWarranty API

Унифицированный интерфейс для пакетной и одиночной проверки Dell, Lenovo, HP и Apple с генерацией API-ключей.

Мгновенное определение статуса гарантии, точных дат и заводской комплектации (CPU, RAM, SSD) в JSON-формате.
Как данные CheckWarranty попадают в Snipe-IT
| Поле Snipe-IT | Источник CheckWarranty | Логика обработки коннектором |
|---|---|---|
| warranty_months | data.endDate, data.startDate | Вычисляется по формуле: round((endDate - purchaseDate) / 30.4375) |
| purchase_date | data.startDate / shipDate | Сохраняет исходную дату закупки; если поле пустое, подставляет дату отгрузки вендора |
| _snipeit_cpu_* | data.specs.cpu | Заводская модель процессора (Intel Core i7-1185G7, Apple M2 Pro) |
| _snipeit_ram_* | data.specs.ram | Заводской объем памяти (16GB DDR4 3200MHz, 32GB Unified Memory) |
| _snipeit_storage_* | data.specs.storage | Заводской накопитель (512GB PCIe NVMe M.2 SSD) |
docker run --rm \ -e SNIPEIT_URL=https://snipeit.yourcompany.com \ -e SNIPEIT_API_KEY=your_snipeit_api_token \ -e CHECKWARRANTY_API_KEY=cw_live_your_checkwarranty_key \ -e AUTO_BRAND_DETECT=true \ -e SYNC_SPECS=true \ -e DRY_RUN=false \ checkwarranty/snipeit-warranty-sync:latest
Проверьте своё устройство
Введите свой номер или нажмите на пример, чтобы сразу увидеть сохранённый результат из базы. Проверка своего устройства начнётся только после отправки. Для массовой проверки и экспорта войдите в аккаунт.
Скрытая проблема ITAM: почему даты гарантий устаревают
Учет IT-активов полезен только тогда, когда данные в системе актуальны. В большинстве компаний, использующих Snipe-IT, дата окончания гарантии заносится вручную один раз — в момент ввода ноутбука или сервера в эксплуатацию. Затем данные застывают на годы.
За 2–4 года компания докупает продление сервисных контрактов, меняет компоненты по гарантии или принимает на баланс бывшую в употреблении технику. Когда у сотрудника отказывает системная плата, IT-отдел обращается к вендору и внезапно выясняет, что гарантия закончилась две недели назад, а ремонт по коммерческому прайсу стоит сотни долларов.
Написание собственных скриптов для парсинга сайтов поддержки вендоров всегда упирается в три барьера:
- Корпоративные WAF и капчи: Порталы Dell, Lenovo и HP защищены системами Akamai Bot Manager, Cloudflare Turnstile и PerimeterX, моментально блокирующими headless-браузеры.
- Различия в требованиях брендов: Для HP обязательно нужен не только серийный номер, но и код продукта (#ABA); для Dell — 7-значный Service Tag; для Lenovo — 8-значный серийник и MTM-код.
- Постоянные изменения верстки: Вендоры регулярно обновляют порталы поддержки, ломая селекторы каждые 2–3 месяца.
Для решения этой проблемы CheckWarranty выпустила официальный открытый коннектор: checkwarranty/snipeit-warranty-sync. У скрипта нулевые внешние зависимости (только стандартная библиотека Python), есть готовый Docker-образ и полная поддержка Dell, Lenovo, HP и Apple.
Архитектура базы Snipe-IT: ловушка warranty_months
При попытке написать интеграцию со Snipe-IT разработчики сталкиваются с неочевидной архитектурной особенностью: Snipe-IT не позволяет напрямую записать дату окончания гарантии через REST API.
В архитектуре Snipe-IT колонка warranty_expires является расчетным виртуальным полем:
warranty_expires = purchase_date + warranty_monthsЕсли отправить в API запрос с полем {"warranty_expires": "2027-04-15"}, система вернет ошибку валидации 422 или проигнорирует его. Единственный правильный способ — вычисление точного количества месяцев гарантии:
# Формула расчета в checkwarranty/snipeit-warranty-sync
days_delta = (warranty_end_date - purchase_date).days
warranty_months = max(0, round(days_delta / 30.4375))Наш коннектор автоматически обрабатывает три ключевых сценария:
- Сохранение даты закупки: Если в Snipe-IT уже указана дата покупки по накладной, она остается нетронутой, а обновляется только
warranty_months - Автозаполнение из даты отгрузки: Если дата закупки пуста, скрипт берет официальную дату производства или первой отгрузки от вендора.
- Синхронизация в Custom Fields: При наличии настраиваемого поля (например,
FIELD_WARRANTY_EXPIRATION) точная календарная дата пишется напрямую для удобной сортировки в таблицах.
Обогащение заводской комплектацией (CPU, RAM, SSD)
Помимо гарантии, CheckWarranty извлекает оригинальную спецификацию сборки (As-Built BOM) непосредственно из базы вендора. Коннектор может заполнять настраиваемые поля Snipe-IT:
- Процессор: Точная модель (например, Intel Core i7-1185G7 или Apple M2 Pro).
- Оперативная память: Объем и тип, установленный на заводе (16GB DDR4 3200MHz).
- Накопитель: Заводской объем SSD (например, 512GB PCIe NVMe M.2).
- Уровень поддержки: ProSupport Plus Onsite, Premier Support NBD или AppleCare+.
Обзор API CheckWarranty и эндпоинты проверки
Скрипт взаимодействует с единым REST API CheckWarranty. Полная интерактивная документация доступна в разделе checkwarranty.info/docs/api.
Ответ возвращается в стандартизированном JSON независимо от того, проверяется ли Dell Latitude, Lenovo ThinkPad или MacBook Pro:
{
"status": "success",
"data": {
"serial": "PF2B9XYZ",
"brand": "lenovo",
"model": "ThinkPad T14 Gen 2",
"warrantyStatus": "ACTIVE",
"startDate": "2023-04-12",
"endDate": "2026-04-11",
"daysRemaining": 359,
"entitlement": "Premier Support Onsite NBD",
"specs": {
"cpu": "Intel Core i7-1185G7",
"ram": "16GB DDR4",
"storage": "512GB NVMe SSD"
}
}
}Пошаговый запуск: Docker, Python CLI и Cron
Интегратор готов к быстрому запуску в любой инфраструктуре:
Шаг 1: Безопасный аудит в режиме --dry-run
Перед внесением изменений в Snipe-IT запустите скрипт с флагом --dry-run. Он прочитает активы, проверит гарантию в API и выведет сводную таблицу в консоль без изменений в базе:
# Клонируем репозиторий
git clone https://github.com/checkwarranty/snipeit-warranty-sync.git
cd snipeit-warranty-sync
# Настраиваем переменные окружения
cp .env.example .env
# Запускаем аудит без записи
python3 sync.py --dry-runШаг 2: Запуск в Docker Compose рядом со Snipe-IT
services:
snipeit-sync:
image: checkwarranty/snipeit-warranty-sync:latest
restart: "no"
environment:
- SNIPEIT_URL=http://snipeit:80
- SNIPEIT_API_KEY=ваш_snipeit_токен
- CHECKWARRANTY_API_KEY=cw_live_ваш_ключ
- AUTO_BRAND_DETECT=true
- SYNC_SPECS=true
- DRY_RUN=falseШаг 3: Настройка регулярного обновления по Cron
0 2 * * * docker run --rm --env-file /opt/snipeit/.env checkwarranty/snipeit-warranty-sync:latest >> /var/log/snipeit-sync.log 2>&1Справедливое списание и сообщество Open Source
В CheckWarranty действует строгое правило: кредиты списываются только за фактически полученные полезные данные об устройстве. Если серийный номер не найден или произошла ошибка, списание равно 0.
Каждому новому пользователю начисляется 10 бесплатных проверок для тестирования интеграции со Snipe-IT на тестовом стенде.
- Репозиторий на GitHub: github.com/checkwarranty/snipeit-warranty-sync
- Официальный PR в Snipe-IT: grokability/snipe-it #19967
- Документация REST API: checkwarranty.info/docs/api
Теги
Готовы автоматизировать проверку партии?
Массовая проверка гарантии, дат и спецификаций для Lenovo, Dell, HP и Apple за 60 секунд. Гарантия Zero-Risk: 0 списаний за ненайденные серийники.