Avr 05 2012
Autodesk Inventor Licence réseau non Disponible
Autodesk ne semble pas fournir d’outil pour savoir qui utilise des
licences réseau Inventor. Les utilisateurs finaux se demandent
pourquoi ils obtiennent un message d’erreur Inventor
« Licence réseau non disponible », et à qui ces licences ont été
attribuées. J’ai écrit cet outil afin d’éviter les appels inutiles au département informatique et aussi donner la possibilité à tous de savoir qui est connecté à chaque instant. Ainsi les utilisateurs peuvent s’arranger 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. Je l’ai mis à disposition des utilisateurs sur un partage Windows.
Enfin, Paramétrer la variable « Users » avec votre propre nombre de licences. Nous avons 4 licences concurrentes ici.
A présent, les utilisateurs savent où regarder lorsqu’ils ont un message d’erreur Inventor « Licence réseau non disponible ».
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
Nouvelles modif:
– Test existence fichier flex.log
– Correction bug, donnait une erreur si personne n’était connecté