FLEXlm浅谈之一 License文件格式
License文件由注释行,Server行,Demon行,以及Feature行构成, 另外有一个续行符'\'
用来表示一行的继续.
注释行
注释行
~~~~~~~~
当一行的开始是'#'符号时,该行被License Manager(lmgr32xx)认为是注释行,有时候
'|'也可以作为注释行的开始.
Server行
~~~~~~~~~~
Server行用来标识一台特定的主机,其格式是:
SERVER nodename id port-number
| | | |
| | | |___TCP端口号,如 1700
| | |
| | |___主机的ID号,Win95/98/NT平台下通常是网卡物理地址
| |
| |___主机的名称,win95/98/NT下可以用ipconfig命令看到
|
|____Server行开头的关键字,标识该行为Server行,不能更改.
例如:
SERVER hostname 000012345678 TCP:1700
Daemon(或Vendor)行
~~~~~~~~~~~~~~~~~~
Deamon行是用来标识不同的卖主(Vendor-中文里译做卖主怎么觉着老土老土象是卖菜的:P)
或者说是用来标识不同的软件商吧, 其常见格式是:
DAEMON daemon_name daemon_path
| | |
| | |___daemon的路径
| |
| |_______daemon的名字
|
|___Deamon行的关键字,Flexlm6.0以后的版本也支持用VENDOR
例如:
DAEMON cdslmd c:\cdslic\bin\cdslmd.exe
| |
| |___Cadence License Daemon的路径
|
|___Daemon的名字为cdslmd (Cadence License Manager Daemon 的简称)
Feature行
Feature行
~~~~~~~~~~~~
Feature行是用来对软件特定的功能进行限制的,其常见的格式为:
FEATURE name vendor version expiration_date n Key "Vendor_String" hostID
| | | | | | | | |
| | | |_版本号 | | | | |__主机ID
| | | |_过期时间 | | | 可省略
| | |_厂商标识 | | |
| | | | |___厂商定义的字符串
| |__Feature名称 许可的终端用户个数| |
| (同时使用) <- |__20个字节的密码
|___Feature行的关键字
例如:
FEATURE CADV_256SUPUC_ALL cdslmd 8.000 1-jan-0 9 2884F271C1E6E3A81DB8 "J"
| | | | | | |_Vendor
| | | | | | String
| | | | |_允许9个终端用户 |_密码
| | | |
| | | |_0年1月1日过期,0年表示永久有效
| | |
|_Feature名称 | |_版本8.0
|_Cadence License Manager Daemon
续行符号'\'
~~~~~~~~~~~~~~
一行太长需要续行的时候, 在行末尾用'\'符号表示续行,如上面的Feature又可以写为:
FEATURE CADV_256SUPUC_ALL cdslmd 8.000 1-jan-0 9 \
2884F271C1E6E3A81DB8 "J"
字符串与串之间可以用空格或者TAB隔开, Lmgr不理睬多余的空格和TAB.
详细的FLEXlm文件格式可以参考Flexlm的End-User-Manual.
FLEXlm浅谈之二 设置环境变量
以下都是针对Win95/98以及NT来说的.
一般说来,License Manager需要一个环境变量才能找到License文件.(有的软件不需
要设置环境变量,只需将license文件放置到它的某个目录下面就可以了,如ActiveVHDL3.3,
只需将license.dat放在它的dat目录下.)
通常环境变量名称是LM_LICENSE_FILE, 大小写无关, Win95/98下的设置方法是在
autoexec.bat中加入一行: (不包括下面那些说明)
SET LM_LICENSE_FILE=c:\flexlm\mylicense.dat
| |
| |_环境变量路径: 该例是License文件的名称及路径
|___变量名称
如果有多个License文件,可以用分号隔开,如:
SET LM_LICENSE_FILE=c:\flexlm\license1.dat;d:\flexlm\license2.dat
应用软件的License Manager会自动遍历环境变量指定的所有License文件, 查找它所需
要的Feature, 不同License文件路径的先后次序无关, 只有WorkviewOffice7.5比较特殊,
必须将它的环境变量放在第一个才能工作,否则它就不工作:
SET LM_LICENSE_FILE=c:\WVO75\license.dat;c:\flexlm\mylicense.dat
除了LM_LICENSE_FILE这个环境变量名称外, 有些软件还使用自己特定的环境变量
名称. 安装软件的时候, 安装程序会一般会自动添加这些环境变量. 如Specctra8.0使
用CDS_LIC_FILE环境变量名称:
SET CDS_LIC_FILE=c:\cdsLic\license.dat
MentorGraphicsRenoir以及ModelSimEE如果安装的时候选择Mentor Graphics License
Manager, 软件会使用MGLS_LICENSE_FILE环境变量:
SET MGLS_LICENSE_FILE=c:\flexlm\license.dat
如果License是由Server提供的, 那么环境变量的路径应该给出Server的名称以及端口,
而非License文件的路径以及名称, 如:
SET LM_LICENSE_FILE=1700@
www.myhost.edu.cn|
|__让License Manager去
www.myhost.edu.cn的1700端口获取License
WinNT下设置环境变量需要在控制面板里面添加, 格式相同.
FLEXlm浅谈之三 - License文件使用技巧
这次想解决的问题是 -- License文件多了怎么办?
不知道为什么FLEXlm很流行, 机器里面装得EDA软件多了, 会有若干个License.dat.
由于环境变量只是告诉Lmgr(License manager)从哪儿找它所需要的License文件, 所以:
第一个解决办法是可以将License.dat换个名字,如pwpcb.Lic, cct80.Lic等等,
然后用设置多个License文件环境变量的办法将每一个文件的路径添加到环境变量中:
SET LM_LICENSE_FILE=c:\flexlm\pwpcb.Lic;c:\flexlm\cct80.Lic
License文件的名称/后缀可以任意选取,只要保证变量设置正确以及License文件有效即可.
还可以这么做: ---- 不推荐使用
只设置一个环境变量设置: SET LM_LICENSE_FILE=c:\flexlm\license.dat
然后把所有的License文件都copy到flexlm目录下, 为了便于区分, 取比较容易记的名字,
例如PowerPCB2.1.Lic, ModelSimEE5.2e.Lic, Specctra8.0.Lic,等等,
需要用哪个软件的时候, 把相应的License文件copy一份然后改名为license.dat即可.
Copy, Rename, Copy, Rename...太麻烦了:(, 于是采用第二种解决办法--合并License.
(注:仅用于没有Server Line的License文件,且软件用的环境变量名为LM_LICENSE_FILE)
前面简单介绍过License文件的格式, License文件的内容不再是陌生的了,可以用文
本编辑器打开所有的License文件,把它们的内容统统copy&paste到license.dat里面,
注释部分可以任意修改,其它内容最好保持原样, 然后只设置一个环境变量:
SET LM_LICENSE_FILE=c:\flexlm\license.dat
FLEXlm浅谈之四 - FLEXlm Server
推测FLEXlm这个名字应该是Flexible License Manager的简写.
FLEXlm Server方式的License应该如下设置:
License.dat文件放在主机中, 主机运行Server提供License服务, 客户端的环境变量
设置为
SET LM_LICENSE_FILE=[TCP/IP端口]:[主机名称],
其中端口和主机名称应该和主机的License文件中的Server Line一致, 前面已经简单介绍
过, 这里便不再赘述.
启动Server的方式有两种, 一是DOS命令行方式, 二是Windoz的窗口方式
1. DOS 方式
1. DOS 方式
在c:\flexlm目录下可以找到一个Lmgrd.exe文件---License Manager Daemon, 这个
Daemon是FLEXlm Server.
License.dat文件需要和Daemon文件放在同一个目录下,
启动 license server,可在 c:\flexlm 目录下执行:
c:\flexlm\lmgrd -app -c
关闭 license server,可在 c:\flexlm 目录下执行:
c:\flexlm\lmutil lmdown
lmutil.exe是License Manager Utility.
2. Windoz的窗口方式
安装某些软件的时候, 会有一个安装License Server的选项, 选中它安装完成后会在
控制面板中发现一个FLEXlm License Manager的小工具. 在FLEXlm License Manager
Setup的TAB里可以选择Daemon, License文件,以及输出的日志文件; Control的TAB中
可以启动/关闭Server以及查看Server状态, 另外几个TAB还提供了一些其它辅助功能.
Windoz下的这个Flexlm License Manager要比命令行方式的方便一些, 至少它可以
浏览以选取Daemon/License文件, 不过有时候发现控制面板里面找不到. 事实上它是
一个控制面板的扩展应用程序, 如在PowerPCB目录下可以找到Flexlm.cpl这个文件,
用鼠标双击它就运行出上面提到的那个管理窗口.
没有研究过解决一个主机运行多个Server分别对应不同软件的问题.
FLEXlm是应用广泛的License管理工具,它以使软件License能够在网上浮动而出名。浮动的License有利于软件的使用和对 License的管理,这使得用户能够高效地使用有效的许可,并使管理者能够控制允许使用它的节点。由于有大约1500厂商使用FLEXlm管理 License,所以CAD系统管理人员极有可能要同时安装和管理来自不同厂商的License或同一厂商多个产品的License文件。可采取以下方法 避免产生冲突:
(1)用一个服务器运行一个Lmgrd(License文件的后台管理程序)和多个License文件;
(2)用一个服务器运行多个Lmgrd和License文件;
(3)运用多个服务器节点,每个服务器运行单独的Lmgrd和License文件。
第一种选择主要适用于高版本的Lmgrd,V6之前的FLEXlm,每个Lmgrd只能管理一个License文件;第二种选择,将使用一台服务器,但需要运行多个Lmgrd;第三种选择,必须使用多个License服务器。
一、服务器端设定
1. License文件的设定
在使用FLEXlm进行管理的License文件中一般有SERVER行,如图1所示,它通过SERVER行的hostname和hostID定义License服务器。
图1 SERVER语名行
2. 服务方式的选择
(1) 一个服务器运行一个Lmgrd 和多个License文件 如果多个License文件具有相同的hostID,则可以通过修改hostname进行合并。合并时,首先将多个 License文件加到一个文件中,然后修改SERVER行,并且只保留一个SERVER行。对于Windows NT操作系统,应在各License的默认存放位置保存一个合并后的备份,这样每个软件将在其默认位置找到License信息,从而避免了对 LM_LICENSE_FILE的设定;对于UNIX操作系统,可以建立一个默认位置到License存放位置的Link。合并后的License文件, 就可以使用同一个Lmgrd。
(2)一个服务器运行一个Lmgrd和一个License文件 如果HostID不一样,则这些License服务只能运行于不同的服务器节点上,并且License不能合并。可以选择使用一个服务器运行一个Lmgrd和License文件。
(3)一个服务器运行多个Lmgrd和License文件 如果多个License未进行合并,可以通过在同一台机器上启动多个Lmgrd,每个Lmgrd管理一个License文件。使用多个Lmgrd管理多个License文件对服务器的性能并没有明显影响。
如果License是由不同版本的FLEXlm产生的,一般是新版本可以管理旧版本的License文件。所以应使用最新的Lmgrd和Vendor daemon。另外,当用一个服务器的多个Lmgrd管理多个License文件时,应该注意任何二个License文件的post都不能一样,并且对于 每个License而言,应选用合适的Lmgrd。
二、 客户端设定
当使用客户端应用程序时(a Licensed application),可以通过在系统的环境变量中设定LM_LICENSE_FILE,使Application能够指向不同服务器上的License文件。
如果要使a Licensed application使用不同服务器的License(每一个License服务器都有单独的一个License文件),客户端应将需要用到的License文件拷贝到本机目录下,并指定LM_LICENSE_FILE环境变量。
UNIX: % setenv LM_LICENSE_FILE lfpath1 : lfpath2:.... : lfpathN
Windows: lfpath1 ;lfpath2:.... ;lfpathN
LfpathN为第N个License的路径;UNIX下路径间用“:”隔开;Windows/NT下路径间使用“;”隔开;
这样,每个Licensed application在启动时将依次查询LM_LICENSE_FILE中所指定的License文件,并向相应的License服务器申请许可,以便 用户能从所列的服务器得到许可。LM_LICENSE_FILE也可以使用各License文件中所指定的“post@hostname”。下面以 Windows NT为例介绍多个FLEXlm的安装。
三、同一机器上多个FLEXlm License Server的安装
(1)以Administrator身分登录;
(2)在C盘建C:\FLEXlm 目录,并拷贝相关文件到其下;
(3)在C:\FLEXlm下建立欲安装License Server的软件目录,放置各软件的License文件, Daemon和Daemon所需的动态连接库;
(4)修改License.dat的SERVER行和DAEMON的位置,并启动FLEXlm License Manager,界面如图2所示;
图2 FLEXlm License Manager界面
(5)在Setup修改Service Name,输入适当名称,以区别是何种License服务;利用Browse选择合适Lmgrd.exe和对应的License.dat并指定 Debug.log的放置路径;
(6)选中“StartServer at Power-Up”与“Use NT Services”,这样下次启动机器时,将自动启动该License服务;
(7)点击Control按钮检查Service Name是否与设定名称相同,如果不同,回到“Setup”重新选择Service Name;如果一样,点击“Start”启动该License Server;点击“Status”检查License Server启动情况,若出现Server_name: License server UP (MASTER),表示 License Server 启动成功;
(8)安装另外的License Server:可依上述⑶~⑺重新执行一次即可;
(9)切换不同License Server:在“Setup”中选择适当的“Service Name”,然后启动或停止相应的License服务;
(10)移除License Server:在“Setup”选择适当的“Service Name”,然后按“Remove”即可。