IN018 複数のライセンスサーバからライセンスが空いているサーバを
自動選択させるバッチ処理事例 (Linux/Unix)
 
 ◆ 概要 ◆

FAQ IN017 でご案内していますように、 FieldView では FLEXlm との相性上、環境変数 LM_LICENSE_FILE を使った空きライセンスサーバ選択の機能を推奨しておりません。
ここでは、 Linux/Unix でのシェル環境を利用したサンプルバッチ作成方法をご案内いたします。なお、サンプルバッチファイルについては、サポート対象外なので、ご了承ください。

 

◆ 設定方法 ◆

《手順1》 実行ファイル lmutil の用意

今回のサンプル手順では lmutil という実行ファイルが必要となります。この実行ファイルはライセンスステイタスをコマンドベースで確認できます。FieldView インストールディレクトリ内には同梱されておりませんが、他の FLEXlm 利用のアプリケーションなどではインストールディレクトリ内に配置されています。この実行ファイルをご用意ください。

《手順2》 各ライセンスファイルの用意

各サーバへのライセンスファイルを別々のライセンスファイルとして licenseA.dat, licenseB.dat, licenseC.dat, ..... のような形で用意します。

《手順3》 起動スクリプトの用意

以下にサンプル シェルスクリプトを示します。

---------------------------サンプルシェルスクリプト ここから ------------------
#!/bin/bash

LMUTIL="/usr/local/Pointwise/flexnet/linux/lmutil"
TargetLicenseFile="/usr/local/FieldView/fv12.1/fv/data/license.dat"
TargetFVexe="/usr/local/FieldView/fv12.1/fv/bin/fv"

#------------------------------------------------------------------------
### /home/foo/work/license//licenseA.dat
### /home/foo/work/license//licenseB.dat
#------------------------------------------------------------------------

cat $0 | awk '($1 == "###"){printf("%s\n", $2)}' > "./tmp.list"
nRow=`wc -l "./tmp.list" | awk '{printf("%d", $1)}' `

echo "number of license files : "${nRow}
echo ""

nCount=0
while [ true ]
do
nCount=$((nCount+1))
if [ ${nCount} -gt ${nRow} ] ; then
echo "Sorry, All floating licenses are in use."
break
else
echo "file number:"${nCount}
fi

#---- obtain the license file information
LMFILE=`awk '(NR == '${nCount}'){printf("%s", $1)}' "./tmp.list"`
echo ${LMFILE}
echo ""

#---- obtain the license daemon status
${LMUTIL} lmstat -a -c ${LMFILE} > ./tmp.log
issued=`awk '($1 == "Users" && $2 == "of"){printf("%d\n", $6)}' ./tmp.log`
used=`awk '($1 == "Users" && $2 == "of"){printf("%d\n", $11)}' ./tmp.log`
echo "issued : "${issued}
echo " used : "${used}

if [ ${used} -lt ${issued} ] ; then
echo ${LMFILE}
echo ${TargetLicenseFile}
cp ${LMFILE} ${TargetLicenseFile}
${TargetFVexe}
break
fi
done

---------------------------サンプルシェルスクリプト ここまで ------------------

《解説)

LMUTIL: lmutil 実行ファイルの配置場所をパス指定
TargetLicenseFile: メインのライセンスファイルの配置場所をパス指定
              *かならずバックアップをとっておいてください
TargetFVexe:起動する FieldView 実行ファイルの配置場所をパス指定

以下のような "###" で始まる行は 各ライセンスファイルの置き場所を列挙しています。スクリプトが "###" 行を自動判別しますので、単純なコメント行ではございません。

### /home/foo/work/license//licenseA.dat
### /home/foo/work/license//licenseB.dat



《手順4》 実行

以下のように 実行します。

[foo@machine]# ./sample.sh

"source ./sample.sh" の形での実行では、正常動作いたしません($0 変数を利用しているため)。

《注意点》

メインのライセンスファイルは必ず、バックアップをとっておいてください。
・ライセンスの状況によって空きライセンスサーバ用のライセンスファイルをメインのライセンスファイルに
 コピーする仕様になっていますので、ライセンスファイルのアクセス権限次第では正常動作しません。

・冒頭にも記していますが、ご案内しているサンプルスクリプトは FLEXlm 仕様やシェルスクリプト内容が
 メインとなっていますのでサポート対象外です。
 また、すべての Linux/Unix 環境において動作保証しているものではございません。
 加えて、開発元配布しているものでもありません。あくまでサンプルプログラムです。
 プログラム類の改変は自由に行ってもかまいませんが、ご紹介している シェルスクリプトサンプルと改変後の
  スクリプトによる損害は弊社では責任負いかねますので、ご留意ください。

 

 
 
 
 
 
 
・この資料の内容は予告なしに変更されることがあります。
・いかなる場合でも、この資料の内容およびその運用の結果に関しては一切の責任を負いません。
・この資料の一部または全部を無断で使用、作成することはできません。
All rights reserved by Vinas Co., Ltd.
sales@vinas.com