Перейти к публикации
iT4iT.CLUB

Поиск по сайту

Результаты поиска по тегам 'produkey'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Категории и разделы

  • Операционные системы
    • UNIX
    • Mac OS
    • Windows
  • Системы мониторинга
    • Zabbix
  • Сетевое оборудование
    • Cisco Systems
    • MikroTik
    • Ubiquiti Networks
  • Микроконтроллеры
    • Arduino

Блоги

Нет результатов для отображения.

Нет результатов для отображения.


Искать результаты в...

Искать результаты, содержащие...


Дата создания

  • Начать

    Конец


Последнее обновление

  • Начать

    Конец


Фильтр по количеству...

Зарегистрирован

  • Начать

    Конец


Группа


Найдено 1 результат

  1. Всем доброе время суток. Сегодня пойдет речь об одном из вариантов сбора информации о лицензиях операционных системах Windows и некоторого сопутствующего программного обеспечения. Для сбора будет использована утилита ProduKey, это далеко не идеальный вариант, но вполне приемлемый, если нет иных средств мониторинга, и требуется что-то быстро слепить на коленке без траты денег. И так, имеется группа компьютеров находящихся в домене, подсеть 10.10.10.0/24, ProduKey запускается от учетной записи администратора домена или администратора той ветки, к которой принадлежит подсеть. Программой можно пользоваться как в графическом интерфейсе, так и в консольном режиме. Последний вариант, лично для меня, более предпочтителен. ВАЖНО: нам требуется программа только на Английском языке т.к имена ключей использующихся в отчетах должны соответствовать именам ключей в PHP скрипте далее. В корне с программой создаем .bat файл со следующим содержимым produkey.exe /iprange 10.10.10.2 10.10.10.254 /sjson 10.10.10.0.json /WindowsKeys 1 /OfficeKeys 1 /SQLKeys 1 /IEKeys 0 /ExchangeKeys 1 /ExtractEdition 0 Используемые параметры /iprange - указывает диапазон адресов для сканирования /sjson - файл отчета необходимо сохранить в формате json /WindowsKeys 1 - собирать ключи операционных систем /OfficeKeys 1 - собирать ключи Office /SQLKeys 1 - собирать ключи SQL сервера /IEKeys 0 - НЕ собирать ключи IE /ExchangeKeys 1 - собирать ключи Exchange /ExtractEdition 0 - НЕ собирать расширенную информацию об операционной системе Это один из вариантов запуска, большее количество параметров описано на сайте разработчика. После того, как утилита закончит свою работу, она сохранит отчет в формате json в указанный нами файл. Можно использовать и другие форматы отчетов, но явного представления о количестве и качестве мы не получим. Программа только собирает данные, все остальные манипуляции с ними ложатся на плечи рядовых администраторов. Но не беда, на помощь нам приходит, уже затертый до дыр, Apache + PHP. Все файлы отчета помещаем на машину, где установлены эти ребята, и обязательно за пределами Web сервера. Сам PHP скрипт будет выглядеть следующим образом. <?PHP if(false) { ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); } $myKeys = array( 'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX' => 'Управляющая компания', 'YYYYY-YYYYY-YYYYY-YYYYY-YYYYY' => 'Завод №1', 'ZZZZZ-ZZZZZ-ZZZZZ-ZZZZZ-ZZZZZ' => 'Складская зона', ); $info = array(); /* Тут указываем путь и шаблон поиска файлов отчетов (Here we specify the path and template for finding report files) glob("../../../info/log_*.json") glob("/var/log/*.json"; glob("*.json"); */ foreach(glob("*.json") as $file) { $json = str_replace(array("\r\n", "\n"), '', file_get_contents($file)); $json = json_decode(iconv('cp1251', 'utf-8', $json), true); if(is_array($json)) { foreach($json as $id => $obj) { if(preg_match_all('/(.+) \((.+)\)/m', $obj['Computer Name'], $host)) { $ip =& $host[2][0]; $name =& $host[1][0]; $net = explode('.', $ip); array_splice($net, 3); array_push($net, '0'); if($ip == $name) $name = '<u>'.$name.'</u>'; $net = implode('.', $net); $info[$obj['Product Name']][$obj['Product Key']][$net][] = $ip.' ('.$name.')'; } } } } echo '<html lang="ru-RU" dir="ltr">'; echo '<head>'; echo '<style type="text/css">body {cursor: default;} i b:hover {color: forestgreen; text-decoration: underline;} #host:hover {color: forestgreen;}</style>'; echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>'; echo '</head>'; echo '<body>'; echo '<pre>'; $uSoft = 0; $uKey = 0; $uNet = 0; foreach($info as $software => $keys) { $uSoft++; echo "<b style='font-size: large; cursor: pointer;' onclick=\"if($('div#s".$uSoft."').is(':visible')) $('div#s".$uSoft."').hide(400); else $('div#s".$uSoft."').show(400);\">".$software."</b> <i style='font-size: normal;'>(licenses: ".count($keys).")</i>\n"; echo "<div id='s".$uSoft."' hidden>"; asort($keys); foreach($keys as $key => $subnet) { $uKey++; if(!$key) $key = 'UNKOWN'; echo "\t<i><b style='cursor: pointer; color: forestgreen;' onclick=\"if($('div#k".$uKey."').is(':visible')) $('div#k".$uKey."').hide(400); else $('div#k".$uKey."').show(400);\">".$key."</b> (hosts: ".(count($subnet, COUNT_RECURSIVE) - count($subnet)).")</i> <b style='color: red;'>".(isset($myKeys[$key])? $myKeys[$key] : '')."</b>\n"; echo "<div id='k".$uKey."' hidden>"; foreach($subnet as $net => $host) { $uNet++; echo "\t\t<i><b style='cursor: pointer;' onclick=\"if($('div#n".$uKey.$uNet."').is(':visible')) $('div#n".$uKey.$uNet."').hide(400); else $('div#n".$uKey.$uNet."').show(400);\">".$net."</b> (hosts: ".count($host).")</i>\n"; echo "<div id='n".$uKey.$uNet."' hidden style='padding-bottom: 10px;'>"; foreach($host as $name) echo "\t\t\t<span id='host'><i>".$name."</i></span>\n"; echo "</div>"; } echo "</div>"; } echo "</div>\n"; } echo '</pre>'; echo '</body>'; echo '</html>'; ?> Просто и сердито. На выходе мы получаем каталогизированный список программного обеспечения, используемых ключей и списка хостов на которых были найдены эти ключи с сортировкой по сетям. Также в скрипте можно указать список ключей и дать им имена. $myKeys = array( 'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX' => 'Управляющая компания', 'YYYYY-YYYYY-YYYYY-YYYYY-YYYYY' => 'Завод №1', 'ZZZZZ-ZZZZZ-ZZZZZ-ZZZZZ-ZZZZZ' => 'Складская зона', ); Удобно если требуется явно указать на какие подразделения или объекты приобреталась та или иная лицензия. Все совпадения будут выделены красной подписью. Выводы Из плюсов, это явная простота и стоимость данного решения. Начальную статистику можно получить уже через пару часов после поднятия вопроса о необходимости иметь результат еще вчера. Наглядность представления. Можно добавить расчет стоимости поддержания данного софта в "деревянных" или сразу в "бакинских", ну и естественно принять соответствующие меры, какие, решать уже Вам. Из минусов, это не 100% результативность т.к статистика будет получена только по тем машинам, которые были онлайн на момент сканирования. Отсутствие системы кэширования для накопления данных при периодических опросах сети. Хотя последнее можно исправить средствами PHP, но пока такая задача не ставилась.
×