はじめに
記事の第2弾ということで、MQに引き続きHULFTをまとめました。
MQもHULFTも他システムとの接続を行うIFのMWで色々と苦労した覚えがあります…。
ダウンロード
HULFTは以下のサイトからダウンロード可能です。
ダウンロードの際に、my HULFTへの登録が必要となります。
本記事記載時は、8.5.2がダウンロード可能でした。
評価版は60日間という制約がついています。
ダウンロードの際に、「シリアル番号」と「プロダクトキー」が発行されますので、
忘れないよう控えておいてください。
インストール
OS情報
MQを構築した環境をそのまま使用していますので、
引き続きCentOSの8を使用しています。
cat /etc/os-release
NAME="CentOS Stream"
VERSION="8"
ID="centos"
~省略~
ファイル確認&解凍
ダウンロードしたファイルの解凍を行うと、マニュアルなども入っています。
解凍した中に「hulft.tar」というファイルが格納されており、
この中にインストーラが入っております。
# ls -l hulft-unix-linux-v852.zip
-rw-r--r-- 1 root root 501860369 3月 28 11:34 hulft-unix-linux-v852.zip
# unzip hulft-unix-linux-v852.zip
Archive: hulft-unix-linux-v852.zip
creating: 32bit/
creating: 32bit/aix_power/
inflating: 32bit/aix_power/hulft.tar
creating: 32bit/solaris_sparc/
inflating: 32bit/solaris_sparc/hulft.tar
creating: 32bit/linux_x86/
inflating: 32bit/linux_x86/hulft.tar
creating: 32bit/solaris_x86/
inflating: 32bit/solaris_x86/hulft.tar
creating: 32bit/hpux_ia/
inflating: 32bit/hpux_ia/hulft.tar
~省略~
cd 64bit/linux_x86/
# ls -l hulft.tar
-rw-r--r-- 1 root root 30218240 5月 13 2022 hulft.tar
# tar -xvf hulft.tar
_hul_main
_etce
_etcs
_etc8
_etceng
_libhulcipher
installer
サイレントインストール用情報ファイル作成
インストーラである、「installer」を実行するとGUIチックに対話式でインストール可能ですが、
今回はサイレントインストールを行いたいため、専用のファイルを作成します。
1から作成することも可能ですが、対話式でインストールする際に、
「./installer -r」というように「-r」オプションを使用すると、
情報ファイルを自動生成し、次回以降使いまわしてインストールすることが可能です。
今回は以下のように作成しました。
(「シリアル番号」と「プロダクトキー」は適当な値にしています。)
環境によって変える項目としては、以下などでしょうか。
詳細はHULFTのマニュアルに詳しく記載がありますので、
そちらをご確認お願いします。
・SERIAL
・PRODUCTKEY
・HULPATH
・HULEXEP
・MYHOSTNAME
# cat installinfo.txt
SERIAL=1234567891234
PRODUCTKEY=ABCD1234EFGH5678IJKL91234
INSTALLATIONROUTE=CUSTOM
HULPATH=/usr/local/HULFT/etc
HULEXEP=/usr/local/HULFT/bin
INSTALLATIONTYPE=NEW
MYHOSTNAME=VM-TEST01
TMPDIR=/usr/local/HULFT/tmp
DATEFMT=1
HULLANG=JPN
CS4TRNSFR=UTF-8
インストール
情報ファイルができたらコマンドを叩くだけです。
一瞬でインストールが完了します。
オプションの「-f」には先ほど作成した、インストール情報ファイルを指定してください。
# ./installer -si -f ./installinfo.txt;echo $?
0
インストール完了後、マニュアルに記載のある通りHULFT関連の環境設定を行います。
今回はrootユーザのプロファイルに以下の情報を追記します。
HULFTインストール後に「HULPATH」配下に「hulft.bsh.profile」というような
変数が設定されたプロファイルが自動で作成されるため、こちらを読み込んでもよいと思います。
HULEXEP=/usr/local/HULFT/bin
export HULEXEP
PATH=/usr/local/HULFT/bin:$PATH
export PATH
HULPATH=/usr/local/HULFT/etc
export HULPATH
HULFT起動
配信デーモンの起動
# hulsndd
集信デーモンの起動
# hulrcvd
要求受付デーモンの起動
# hulobsd
エラーなどが発生していなければ、無事デーモンが起動しているかと思います。
# ps -ef | grep hul
root 70693 1 0 12:26 pts/0 00:00:00 hulsndd
root 70714 1 0 12:28 pts/0 00:00:00 hulrcvd
root 70716 1 0 12:28 pts/0 00:00:00 hulobsd
HULFT停止
配信デーモンの終了
# utlkillsnd
集信デーモンの終了
# utlkillrcv
要求受付デーモンの終了
# utlkillobs
各種定義作成
「utladmin」コマンドから管理コンソールを立ち上げGUIで編集することも可能なのですが、
そのあたりは既に他の方がやっているため、あえてファイルでの定義作成のみ記載します。
配信定義
今回はお試しでデフォルトから少し変更しています。
パラメータの詳細をいくつか代表で紹介します。
FILENAME:配信元のファイル名を記載
JOBID:正常終了後のジョブIDを記載
EJOBID:異常終了後のジョブIDを記載(今回はJOBIDと同じに設定)
PASSWORD:暗号通信用のパスワードを記載。集信側と同じにする必要があります。
#
# ID=TEST02
#
SNDFILE=TEST02
★FILENAME=/tmp/test.txt
DBID=
TRANSTYPE=B
TRANSPRTY=50
INTERVAL=0
BLOCKLEN=0
BLOCKCNT=0
COMP=N
★JOBID=JOB01
COMMENT=
GRPID=VM-TEST02
FMTID=
★EJOBID=JOB01
KJCHNGE=N
CLEAR=K
★PASSWORD=TESTPASS
CODESET=0
COMPSIZE=0
SHIFTTRANSACT=Y
PREJOBID=
DEFLATELEVEL=
END
集信定義
先ほどの配信定義と同様にパラメータを少し紹介します。
FILENAME:集信する際にファイル名を記載
PASSWORD:暗号通信用のパスワードを記載。先ほどの配信側と同じにしています。
#
# ID=TEST02
#
RCVFILE=TEST02
★FILENAME=/tmp/test.txt
OWNER=test
GROUP=test
PERM=666
TRANSMODE=R
ABNORMAL=D
RCVTYPE=S
JOBID=
COMMENT=
GRPID=
EJOBID=
GENCTL=N
★PASSWORD=TESTPASS
CODESET=0
JOBWAIT=T
GENMNGNO=0000
DATAVERIFY=0
END
転送グループ定義
配信定義と詳細ホストを紐づける転送グループの設定です。
私は経験上1転送グループで1ホスト名でしたが、
複数のホスト名を紐づけることで同時に配信できるらしいです。
#
# ID=VM-TEST02
#
GRP=VM-TEST02
SERVER DEF
VM-TEST02
DEFEND
COMMENT=
END
詳細ホスト定義
今回は設定したホスト名以外デフォルトにしています。
#
# ID=VM-TEST02
#
HOST=VM-TEST02
HOSTTYPE=U
KCODETYPE=8
RCVPORT=30000
REQPORT=31000
COMMENT=
JISYEAR=1
CONNECTTYPE=L
MYPROXYNAME=
MYPROXYPORT=
HOSTSPSNUM=0
SENDPERMIT=Y
HULJOBPERMIT=Y
HULSNDRCPERMIT=Y
HULRJOBPERMIT=Y
ALLOWINSTTRANS=N
USRNOTIFY=N
HUL7MODE=N
END
ジョブ定義
今回はHULFTで使用できる変数も紹介したいため、コマンドを直接記載しています。
FILENM:配信ファイル名(または集信ファイル名)をフルパスで取得
EDATE2:配信終了日(または集信終了日)をYYYYMMDD形式で取得
ETIME:配信終了時刻(または集信終了時刻)をHHMMSS形式で取得
使用できる変数の説明などは以下のマニュアルに記載があります。
https://www.hulft.com/help/ja-jp/HULFT-V8/UX-ADM/Content/HULFT_ADM/System/job_execution.htm
#
# ID=JOB01
#
# 例)「/tmp/test.txt」を正常/異常終了後に「/tmp/test.txt_YYYYMMDDHHMMSS」にファイル名を変更
JOB=JOB01
JOB DEF
mv "${FILENM}" "${FILENM}_${EDATE2}${ETIME}"
DEFEND
COMMENT=
END
定義インポート
上記定義毎にファイル保存を行います。
例えば配信定義を「20240420_VM-TEST01_snd.txt」として保存した場合、
インポートコマンドは以下のようになります。
# -f:インポートする定義のファイル名を指定
# -r:各定義を新規IDとして登録するかのオプション。本オプションを使用しないと常に新規となる。
utliupdt -f ./20240420_VM-TEST01_snd.txt -r
定義エクスポート
先に定義ファイルの記載内容、インポートを紹介しましたが、
本来は定義からファイルをエクスポートしそのファイルを修正するほうが一般的かと思います。
今回はインストールから実施し、utladminでの登録を省略しているので
順番が逆になってしましました。
以下は配信定義を全てエクスポートするコマンドになります。
他の定義を抜きたい時は、「-i」に渡す値を変更してください。
# Usage:utligen -f filename -i {snd|rcv|job|hst|tgrp|fmt|mfmt|trg} -id ID
# -f:エクスポートする定義のファイル名を指定
# -i:どの定義(配信や集信など)をエクスポートするか指定
# -id:各定義のどのIDを対象とするか指定(*での一括エクスポートも可能)
utligen -f ./$(date '+%Y%m%d')_$(uname -n)_snd.txt -i snd -id '*'
配信実行
配信側を「VM-TEST01」、集信側を「VM-TEST02」としてファイルの送信を行います。
配信側定義確認
[root@VM-TEST01 ~]# utlidlist -i snd -id '*' -v8
<Sending Management Information Summary>
TEST02
[TgrpID] VM-TEST02
[JobID]
[ErrJobID]
[PreJobID]
[FMTID]
[MFMTID]
[root@VM-TEST01 ~]# utlidlist -i hst -id '*' -v8
<Host Information Summary>
VM-TEST01
[TgrpID] VM-TEST01
VM-TEST02
[TgrpID] VM-TEST02
[root@VM-TEST01 ~]# utlidlist -i tgrp -id '*' -v8
<Transfer Group Information Summary>
VM-TEST01
[HostName] VM-TEST01
VM-TEST02
[SendID] TEST02
[HostName] VM-TEST02
集信側定義確認
[root@VM-TEST02 ~]# utlidlist -i rcv -id '*' -v8
<Receiving Management Information Summary>
TEST02
[TgrpID]
[JobID]
[ErrJobID]
配信実行
HULFTのファイルの配信は「utlsend」コマンドで実行します。
その際オプションとして以下を付けています。
-sync:同期転送モードで配信します。(確か)本オプションを使用しないと、相手へのファイルの到達の有無に関わらず基本正常終了扱いになります。
-w:同期転送待ち時間となります。この値を省略すると、システム動作環境設定ファイルのソケットリードタイムアウトの値が使用されます。
utlsend -f TEST02 -sync -w 30
配信結果確認
配信結果は「utllist」コマンドで確認できます。
「STATUS」が「0000-0000」であれば正常に相手へもファイルの配信ができています。
[root@VM-TEST01 ~]# utllist -s -f TEST02
FILEID HOST NAME START DAY START TIME END TIME RECORDS STATUS CONNECT
TEST02 VM-TEST0 2024/04/20 12:58:44 12:58:44 0 0000-0000 LAN
最後に
取り急ぎ分に起こしたのですが、また後日読み返してきれいに整えたいなと思います…。
参考サイト
・UNIX/Linux 導入 マニュアル
https://www.hulft.com/help/ja-jp/HULFT-V8/UX-INS/Content/HULFT_INS_UNIX/preface.htm
・UNIX/Linux オペレーション マニュアル
https://www.hulft.com/help/ja-jp/HULFT-V8/UX-OPE/Content/HULFT_OPE_UNIX/preface.htm
・ジョブ実行
https://www.hulft.com/help/ja-jp/HULFT-V8/UX-ADM/Content/HULFT_ADM/System/job_execution.htm
・【第2回】HULFT8 配信設定・集信設定・配信テスト(Linux)
https://qiita.com/asds0025/items/5373ae5248964c4cb4cc