Autodesk Inventor: aktuelle Lizenzbelegung Intranet

Di, 24.03.2009 - 08:25 -- admin

Autodesk Produkte mit Netzwerklizenz werden über FlexLM verwaltet. Der Client fragt am Server nach einer Lizenz, ist eine Verfügbar wird diese "ausgecheckt". Kommt es allerdings vor, dass bereits alle Lizenzen ausgecheckt sind, so ist ein Programm start nicht möglich.
Zwar kann man wunderbar direkt am Server sehr wer, welche Lizenz benutzt, will man diese Info aber zentral den Mitarbeitern zur Verfügung stellen so hilft das nicht weiter.
Die Anfrage der Lizenz kann allerdings auch von jedem beliebigen PC aus gemacht werden. In der FlexLM Installation steht dazu die Datei lmutil.exe bereit. Durch Angabe von Parameter kann gesteuert werden, welcher Server und welches Feature ausgelistet werden soll. Zum Ausführen muss nichts weiter installiert werden, es erst die Datei auf einen anderen PC zu kopieren und auszuführen.
Ich habe hiermit ein kleines PHP-Script erstellt und zusammen mit der lmutil.exe auf einen Webserver gepackt. Somit können sämtliche User die aktuellen Lizenzbenutzung zentral über den Browser bzw. über das Intranet abrufen.

readLic("servername","64500INVBUN_F","AIS 2009","my\\lmutil.exe");

  • $server: PC/Server auf dem der FlexLM Lizenzserverläuft
  • $feature: Features, welches angezeigt werden soll (siehe Web-Verweise)
  • $text: Angezeigter Text (optional)
  • $lmutil: Pfad zur lmutil.exe (normal gleicher Ordner wie PHP Datei) (optional)

function readLic($server,$feature,$text="",$lmutil="lmutil.exe") {
	exec($lmutil." lmstat -c @".$server." -a -f ".$feature,$bla);
	$bla = implode("\n", $bla);
 
	preg_match_all("/Total of (\d+) /i",$bla,$lic);
	preg_match_all("/  (.*?) (.*?) (.*?) start (.*?){2}:(.*?){2}(.*?)\n/i",$bla,$out);
 
	$users=$out[0];
 
	echo "<b>".$server." - Autodesk-Lizenzen - ".$text." (".$lic[1][1]."/".$lic[1][0].")</b><br><br>\r\n";
	echo '<table width="90%"><th></th><th>Benutzer</th><th>PC</th><th>Datum</th><th>Status</th>';
 
	$i=1; $class = 'even';
	foreach($users as $line) {
	         $class = $class == 'even' ? 'odd' : 'even';
	         $sp=split(" ",trim($line));
	         if (isset($sp[10])) { $tex="<i>ausgeliehen</i>"; } else { $tex="&nbsp;"; }
	         echo "<tr class=\"".$class."\">";
	         echo "<td>".$i."</td>\r\n";
	         echo "<td>".$sp[0]."</td>\r\n";
	         echo "<td>".strtolower($sp[1])."</td>\r\n";
	         echo "<td>".$sp[8]."</td>\r\n";
	         echo "<td>".$tex."</td>\r\n";
	         echo "</tr>\r\n";
	         $i++;
	}
 
	echo "</table>";
}

graphische Auswertung mit Cacti

Wenn man dann noch Cacti als Auswertungstool für diverse Netzwerkgeräte nutzt, kann man hiermit die Lizenzbelegungen in einem Graph darstellen. Zur Einbindung in Cacti möchte ich hier nicht genau eingehen, wer sich mit dem System auskennt, sollte hoffentlich mit den unten angehängten Mitteln zurechtkommen:

Im angehängten Archiv befinden sich:

  • cacti_data_template_w32_flex_temp.xml
  • cacti_graph_template_w32_flex_graph.xml
  • lic.php