Добрый день, уважаемые читатели.
Буду предельно краток и разобью статью на пункты.
Проблемы организационного характера
Количество пользователей программного продукта AutoCAD превышает количество локальных сетевых лицензий.
- Количество специалистов работающих в ПО AutoCAD не нормируется никаким внутренним документом.
- Исходя из пункта №1, отказать в установке программы почти невозможно.
- Неправильная организация работ ведёт к нехватке лицензий, что приводит к заявкам и звонкам абонентов в службу информационных технологий с данной проблемой.
Проблемы технические
- Отсутствие средств для просмотра списка занимаемых лицензий.
Варианты решения
- Готовое решение поддерживаемое производителем ПО, позволяющее пользователям самостоятельно просматривать список занимаемых лицензий.
- Разработка любого подходящего решения для вывода отчёта работы диспетчера лицензирования в виде вэб-страницы.
Принятое решение и реализация
Техническое задание
- Возможность сэкономить на лицензии ОС
- Вывод списка пользователей занимающих лицензии
Реализация работы диспетчера лицензирования
Принято решение самостоятельно реализовать необходимую функцию. Порядок выполнения:
- Установка и настройка CentOS 7 на сервер виртуализации
- Установка и запуск Autodesk Network License Manager для Linux
- Настройка авто запуска утилиты при рестарте ОС
- Настройка файла параметров (о нём я напишу ниже)
- Установка локального web-сервера и PHP
Реализация вывода списка занимаемых лицензий
- Создание .sh файла с содержимым приведённым ниже:
#! /bin/bash /opt/flexnetserver/lmutil lmstat -a -c [путь к файлу .lic]> "/var/www/html/log.txt"
Он размещается в удобной директории, и настраивается как исполняемый файл.
С помощью данной команды выгружается статус диспетчера лицензирования в файл log.txt
- Использовал команду
watch -n 5 [путь к созданному в п№1 файлу .sh]
Это позволяет каждый 5 секунд вызывать ранее созданный bash скрипт.
- В директории log.txt из п№1, размещается файл index.php со следующим содержимым
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script src="/jq.js"></script> <title>License server AutoCAD</title> <style> </style> </head> <body> <h1>Список лицензий сервера лицензирования autoCAD</h1> <div style="margin: 10px;"> <?php $log = file_get_contents('./log.txt'); $logrp = nl2br($log); $arraystr = explode(PHP_EOL,$logrp); $busy = explode(" ",$arraystr[13]); echo "На данный момент занято: ".$busy[12]." лицензий<br/><br/>"; $i = 18; while($i<=37){ //var $a = $i-17; $data = explode(" ", $arraystr[$i]); $time = str_replace('<br', '', $data[13]); //varEND echo "<span>".$a."</span> "; echo "<span>".$data[4]."</span> "; echo "<span>".$data[12]."</span> "; echo "<span>".$data[11]."</span> "; echo "<span>".$time."</span>"; echo "<br>"; $i++; } ?> </div> </body> </html>
Прошу не осуждать за PHP код, более профессиональные специалисты сделают качественнее, а я сделал в меру своих знаний.
Суть работы index.php:
- Получаю текст файла log.txt, сформированный ранее скриптом, и обновляемый каждые 5с.
- Заменяю тэги переноса на html тэги.
- Разбиваю текст в массив по строкам.
- Форматирую порядок и содержимое строк.
Итог реализации всех требований
Как выглядит GUI сервера:
Как выглядит веб-страница:
Файл параметров .opt
В нём указал
TIMEOUTALL 14400
— время простоя программы ограничено 4 часами
MAX_BORROW_HOURS [CODE] 48
— максимальный срок заимствования ограничен 2 днями.
Доп. информация
Т.к. в организации используются корректные именные доменные уч. записи сотрудников, по логину очень легко определить специалиста занявшего лицензию.
Общий результат усилий:
- Пользователь самостоятельно видит занимаемую лицензию и соответственно снижена нагрузка службы технической поддержки.
- Внутри коллектива специалистов работающих в ПО без участия тех. поддержки решается вопрос «Кому достанется лицензия?», и в зависимости от приоритета работ освобождается или занимается лицензия.
- Экономия на лицензировании Windows.
Автор: DruchininIvanS