Получение информации о списке установленных лицензий с помощью утилиты RING начиная с 8.3.8

Администрирование - Системное

В версии платформы 8.3.8 наконец-то появился долгожданных инструмент для просмотра списка установленных на компьютере лицензий. К сожалению, он не user-friendly, но лучше что-то, чем ничего, администраторы теперь получили возможность с помощью скриптовых команд получить список установленных на компьютере лицензий 1С.

Речь идет об утилите ringс модулем lincense, описанных на ИТС здесь. Использовать ее можно и на более ранних релизах, установив отдельно от платформы.

Важное замечание: утилита пока что не работает для базовых версий программных продуктов 1с.

Отдельная установка библиотеки для более ранних релизов

Дистрибутивы утилиты ringнаходятся в двух файлах:

  1. 1c-enterprise-license-tools-0.1.0-20.x86.msi
  2. 1c-enterprise-ring-0.6.0-15.x86.msi

Они помещаются в каталог ExtDst при установке платформы. Решение - установить отдельно новую платформу и взять из нее эти библиотеки.

Инсталлируются обычным запуском, без всяких сообщений.

Если устанавливать библиотеки отдельно от платформы, они ставятся в каталог "C:\ProgramFiles (x86)\1C\1CE\ring".

 

Настройка JAVA  для работы библиотеки

Для работы библиотеки должна быть установлена java, скачать ее можно с http://java.com

Проблема с путем JAVA_HOME

Если попытаться запустить утилиту ring, может быть выдано сообщение вида:

 

Это значит, что нужно настроить путь к JAVA_HOME, решение легко гуглится, например здесь.

Установка библиотеки криптографии

Для работы утилиты ringнеобходимо установить библиотеку криптографии.

Для этого скачать архив библиотеки: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

Распаковать два jar-файла из архива local_policy.jar и US_export_policy.jar в каталог вида C:\ProgramFiles (x86)\Java\jre1.8.0_91\lib\security. При этом заменяются существующие файлы с более ограниченной криптографией.

 

Если не установить библиотеку, то утилита выдает ошибку вида:

Ошибка получения списка лицензий.

По причине: Ошибка при работе с хранилищем лицензий.

 По причине: Данный ключ не поддерживается данным крипто-провайдером. Необходимо

 установить крипто-провайдер, поддерживающий алгоритм AES 256 CBC с режимом шифр

ования PKCS5Padding (Например, Unlimited Strength Java(TM) Cryptography Extensio

n (JCE) Policy Files for the Java(TM) Platform, Standard Edition (Java SE) Runti

me Environment 7). На данный момент используется крипто-провайдер: SunJCE 1.8

  По причине: Некорректный ключ.

   По причине: Illegal key size

 

Просмотр лицензий

Команда ringдоступна из любого каталога, т.к. при установке прописывается в path.

 

Для просмотра списка лицензий испольуется команда ringlicenselist [--path <хранилище>].

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

 

 

Для информации об отдельной лицензии используется команда ringlicenseinfo [--name <имя>] [--path <хранилище>].

Выдает информацию о лицензии, нужно указывать полное имя лицензии:

 

 

Информация может содержать и описание продукта:

 

Скрипт для получения списка всех лицензий

Готовый скрипт lic_list.cmdприкладываю к статье.

Его код выглядит так:

call ring license list > C:\1.txt

for /F "" %%i in (c:\1.txt) do  call ring license info --name %%i

@echo > C:\lic_list.txt 1s Lisense List

cmd /c for /F "" %%i in (c:\1.txt) do call ring >> C:\lic_list.txt license info --name %%i

pause

 

Сначала получается список лицензий в файл C:\1.txt

Затем файл построчно обрабатывается, и подробная информация со списком лицензий выводится на экран и в файл c:\lic_list.txt:


Обратите внимание, что ring – это тоже пакетный файл cmd, поэтому вызывается через CMD.

Скачать файлы

Наименование Файл Версия Размер
down.zip
.zip 0,25Kb
25.04.16
18
.zip 0,25Kb 18 Скачать

См. также

Комментарии
1. Евгений (BlackHarold) 27.10.16 11:09 Сейчас в теме
Спасибо, помогло ооочень.
2. Осипов Сергей (fixin) 3614 29.10.16 21:59 Сейчас в теме
3. Кондрат (Bar) 04.11.16 14:47 Сейчас в теме
ring license list - список лицензий пустой...
Может причина в том, что у меня УСБ ключ?
4. Осипов Сергей (fixin) 3614 06.11.16 22:49 Сейчас в теме
(3) да, USB ключи и базовые версии не определяются рингом.
5. Дмитрий (DeMonyan) 07.11.16 13:13 Сейчас в теме
Вот только есть одна грабля в этом всём. Если есть нерабочие лицензии на сервере, то они так же попадут в этот список и по ним корректно отобразятся данные.

И вот плавно вытекающий вопрос. В описании ring написано, что проверяя лицензию командой ring license validate --name <имя лицензии> должен быть код возврата 0 если лицензия активна, и код ошибки если с лицензией какие-то проблемы, вот только сколько не мучаю эту утилиту у меня для любой лицензии 0. При этом для нерабочей лицензии вполне корректно выводятся различии в железе с тем компом на котором ставилась это лицензия в прошлый раз.

Для действующей лицензии получаю всё верно:

C:\Program Files\1C\1CE\ring>ring license validate --name <имя рабочей лицензии> && echo ErrorLevel = %errorlevel%
License check passed for the following license: "<имя рабочей лицензии>".
ErrorLevel = 0

А вот для нерабочей лицензии исходя из инструкции errorlevel должен быть – 1, но всё равно получается 0.

C:\Program Files\1C\1CE\ring>ring license validate --name <имя нерабочей лицензии> && echo ErrorLevel = %errorlevel%
Hardware removed:
- Phis Mem_0 : 27916816384
- OS Inst Date_0 : 1376822360
- OS_0 : Microsoft Windows Server 2012 Standard
- OS Ser_0 : 00184-20405-06597-AA231
- Sys Name_0 : S-IC1C
- OS Ver_0 : 6.2
- CPU_0 : CPU0, Intel64 Family 6 Model 45 Stepping 7, 64, 64, 1F8BFBFF000206D7, 11527, None
- CPU_1 : CPU1, Intel64 Family 6 Model 45 Stepping 7, 64, 64, 1F8BFBFF000206D7, 11527, None
- DISK_0 : 512, 63, 13054, 255, 3328770, 209712510, 107372805120

ErrorLevel = 0
9. Сергей Хоменко (VGHOST) 92 02.07.17 17:08 Сейчас в теме
(5)
ring license validate --name <имя нерабочей лицензии> && echo ErrorLevel = %errorlevel%

Подстановка переменных осуществляется до запуска команды на выполнение, когда ErrorLevel содержит код завершения предыдущей инструкции, выполненной оболочкой.
Надо снимать значение ErrorLevel отдельной строкой, без использования & | и (), либо пользоваться конструкцией if errorlevel ...
6. vasja ivanov (vasja_yar) 25.11.16 10:51 Сейчас в теме
7. Владимир Зленко (ZLENKO) 366 24.04.17 16:25 Сейчас в теме
Полезная статья. Тут не особо понятно написано https://its.1c.ru/db/v838doc#bookmark:adm:TI000000674
8. Осипов Сергей (fixin) 3614 24.04.17 16:27 Сейчас в теме
Оставьте свое сообщение