Avr 05 2012

Licences réseau Autodesk Inventor en cours d’utilisation

Publié par à 10:29 sous Divers



Autodesk ne semble pas fournir d’outil pour savoir qui utilise des
licences réseau Inventor. Les utilisateurs finaux se demandent
pourquoi ils n’obtiennent pas de licence et à qui elles ont été
affectées. J’ai écrit cet outil afin d’éviter les appels inutiles et aussi
donner la possibilité à tous de savoir qui est connecté à chaque instant, et se mettre d’accord entre eux pour libérer une licence.
Inventor génère un fichier de log dans lequel chaque (dé)connexion est enregistrée avec d’autres informations. Le script parse le fichier et affiche les utilisateurs connectés.
 
Seulement 2 étapes sont nécessaires pour la mise en place:
– Paramétrer le chemin du fichier de log flex.log vers un répertoire partagé en lecture seule et donner les droits d’accès aux utilisateurs finaux.
– Créer le script suivant inventor.vbs dans le même dossier.
 
Le script a été écrit en VB pour être exécuté depuis n’importe quel PC sous Windows.
Paramétrer la variable « Users » avec votre propre nombre de licences.

 

Option Explicit

Dim objFSO, objFile, strTextFile
Dim line, allSessions(), offline, currentSessions, firstIndex
Dim i, l
CONST ForReading = 1
CONST Users = 4

'Nom du fichier de log
strTextFile = "flex.log"

'Create a File System Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
if not (objFSO.FileExists(strTextFile)) then
   MsgBox strTextFile&" n'existe pas!", vbExclamation, "Error"
   wscript.quit
end if
Set objFile = objFSO.OpenTextFile(strTextFile, ForReading)

i = 0

' Recherche les connexions en ordre inverse
Do Until objFile.AtEndOfStream
    Line = objFile.ReadLine
    If (not InStr(line, "(adskflex) OUT:") = 0) or (not InStr(line, "(adskflex) IN:") = 0) Then
        Redim Preserve allSessions(i)
        allSessions(i) = line
        i = i + 1
    End If
Loop

' Index dans allSessions
On Error Resume Next
l = UBound(allSessions)
' Compte les licences
i = 0

if (l = "") then
   currentSessions = "Personne n'est connecté"
end if

' Retourne les x dernières connexions
' sans tenir compte des doublons
Do While (i < Users) and (l >= 0)
   line = split(allSessions(l))
   ' Cas heure < 10h
   if line(0) = "" then
      ' Check if user has not disconnected
      if StrComp(line(3), "In:", vbTextCompare) = 0 and InStr(currentSessions, line(5)) = 0 then
         offline = offline & line(5) & " "
      end if
      if InStr(currentSessions, line(5)) = 0 and InStr(offline, line(5)) = 0 then
         currentSessions = currentSessions & line(1) & " " & line(5) & VbCrLf
         i = i + 1
      end if
   else
      if StrComp(line(2), "In:", vbTextCompare) = 0 and InStr(currentSessions, line(4)) = 0 then
         offline = offline & line(4) & " "
      end if
      if InStr(currentSessions, line(4)) = 0 and InStr(offline, line(4)) = 0 then
         currentSessions = currentSessions & line(0) & " " & line(4) & VbCrLf
         i = i + 1
      end if
   end if
   l = l - 1
Loop

MsgBox currentSessions, vbInformation, "Licences Inventor"
'wscript.echo currentSessions

objFile.Close

'Cleanup
Set objFSO = Nothing

 


One response so far

Une Réponse à “Licences réseau Autodesk Inventor en cours d’utilisation”

  1. daveon 11 Avr 2013 at 4:52

    Nouvelles modif:
    – Test existence fichier flex.log
    – Correction bug, donnait une erreur si personne n’était connecté

Comments RSS

Leave a Reply