Page 1 sur 1

Licences Office Proof Of Concept

Publié : 17 juin 2020 - 11:25
par Jordi
Bonjour à tous,
Suite à une discussion avec Vincent et Yohannès, voici une petite POC à continuer sur la gestion des clés Office.

La problématique:

Dans notre centre, nous avons des licences Office 2016 en volume mais nous avons une voire plusieurs clés par sites.
La gestion avec l'outil VAMT de Microsoft est un peu fastidieuse (il faut manuellement lancer l'inventaire dans VAMT et la remontée ne se fait que si le/les poste(s) en face sont connectés)

Packet Wapt, approche possible

J'ai fait un package ef-check-office2016-licence.
Voici le setup.py:

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import *

pgmsoffice = programfiles
def install():
    return 0
def audit():

    pathosppvbs = makepath(pgmsoffice,'Microsoft Office','Office16','OSPP.VBS')
    dstatus = run('cscript "%s" /dstatus'  % pathosppvbs)
    if '---NOTIFICATIONS---' in dstatus:
        print("GVLK")
        return "WARNING"
    elif '---LICENSED---' in dstatus:
        line = dstatus.split("\n")
        for i in line:
            if ('Last 5 characters of installed product key: ') in i:
                key = i.split("Last 5 characters of installed product key: ")
                print(key[1][0:5])
        return "OK"

if __name__ == '__main__':
    audit()
Du coup, l'audit de ce package affichera un Warning ou un OK mais également elle stockera dans last_audit_output les 5 derniers caractères de la clé Office.

J'ai crée une table "office" dans la bdd wapt que j'ai rempli avec mes clés:
office.PNG
office.PNG (11.53 Kio) Consulté 6264 fois
Et dans la partie reporting, j'ai fait la requete suivante:

Code : Tout sélectionner

SELECT hosts.computer_name,
    hostpackagesstatus.last_audit_status AS licence_status,
    SUBSTRING(hostpackagesstatus.last_audit_output from 0 for 6) AS partial_key,
    office.fullkey,
    office.site,
    office.description,
    office.max_allowed
FROM hosts
LEFT JOIN hostpackagesstatus on hosts.uuid = hostpackagesstatus.host_id AND hostpackagesstatus.package = 'ef-check-office2016-licence'
LEFT JOIN office on office.id LIKE SUBSTRING(hostpackagesstatus.last_audit_output from 0 for 6)
ORDER BY office.site;
Cela amène au résultat suivant:
reporting.PNG
reporting.PNG (17.31 Kio) Consulté 6264 fois
Il y aura également possibilité de faire d'autres requêtes utiles tel que:
- tous les postes en warning (GVLK)
- ou encore du "group by" afin de vérifier que l'on ne dépasse pas les quotas sur les licences

J'espère que cette "Proof of Concept" vous inspirera.
Bonne journée
Jordi

Re: Licences Office Proof Of Concept

Publié : 17 juin 2020 - 18:13
par sfonteneau
Excellent !

Re: Licences Office Proof Of Concept

Publié : 17 juin 2020 - 20:04
par vcardon
Jordi, tu est un Grand Maester du WAPT.

En effet, je t'en avais parlé de cette approche et tu l'as mise en oeuvre, juste trop cool.

Porte toi bien et continue à faire des trucs trop géniaux comme ça, des trucs qui t'aident toi et qui vont aussi aider des tonnes d'autres par la même occasion.

Cordialement.

Vincent

Re: Licences Office Proof Of Concept

Publié : 05 nov. 2020 - 13:54
par Jordi
QQ minutes de repos, parfait pour se détendre l'esprit en faisant une requête SQL :-)
La table "office" n'a pas bougé de structure.

Nouvelle requête:
usage.PNG
usage.PNG (69.59 Kio) Consulté 5846 fois
Bonne journée !