Sep 19 2021
Autodesk Inventor Licencia de Red no Disponible
Autodesk no parece proporcionar una herramienta para averiguar
quién utiliza las licencias de red de Inventor. Los usuarios finales
se preguntan por qué reciben el mensaje de error Inventor
«Licencia de Red no Disponible», y a quién se han asignado estas licencias.
Escribí esta herramienta para evitar llamadas innecesarias al departamento de TI y también para dar a todos la posibilidad de saber quién está conectado en todo momento. Por lo tanto, los usuarios pueden organizar entre ellos la liberación de una licencia.
Inventor genera un archivo de registro en el que se registra cada (des) conexión junto con otra información. El script analiza el archivo y muestra los usuarios registrados.
Solo son necesarios 2 pasos para la instalación:
– Establezca la ruta del archivo de registro flex.log en un directorio compartido de solo lectura y otorgue derechos de acceso a los usuarios finales.
– Cree el siguiente script inventor.vbs en la misma carpeta.
El script fue escrito en VB para ser ejecutado desde cualquier PC con Windows. Lo puse a disposición de los usuarios en un recurso compartido de Windows.
Finalmente, configure la variable «Users» con su propio número de licencias. Tenemos 4 licencias concurrentes aquí.
Ahora, los usuarios saben dónde buscar cuando reciben un mensaje de error de Inventor «Licencia de red no disponible».
Option Explicit
Dim objFSO, objFile, strTextFile
Dim line, allSessions(), offline, currentSessions, firstIndex
Dim i, l
CONST ForReading = 1
CONST Users = 4
'Nombre del archivo de registro
strTextFile = "flex.log"
'Crear un objeto de sistema de archivos
Set objFSO = CreateObject("Scripting.FileSystemObject")
if not (objFSO.FileExists(strTextFile)) then
MsgBox strTextFile&" no existe!", vbExclamation, "Error"
wscript.quit
end if
Set objFile = objFSO.OpenTextFile(strTextFile, ForReading)
i = 0
' Encuentra conexiones en orden inverso
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 en allSessions
On Error Resume Next
l = UBound(allSessions)
' Compte les licences
i = 0
if (l = "") then
currentSessions = "Nadie ha iniciado sesión"
end if
' Devuelve las últimas x conexiones
' sin tener en cuenta los duplicados
Do While (i < Users) and (l >= 0)
line = split(allSessions(l))
' Cas heure < 10h
if line(0) = "" then
' Compruebe si el usuario no se ha desconectado
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, "Licencias Inventor"
'wscript.echo currentSessions
objFile.Close
'Cleanup
Set objFSO = Nothing