3.3.1 自動起動プログラムを登録する
自動起動プログラムの登録の特長を次に示します。
-
伝送の正常終了時,異常終了時に,それぞれ別のプログラムを登録できます。
-
次のどちらかを対象に,プログラムを起動します。
- ファイル名
-
指定したファイルの伝送を契機にプログラムを起動する
- ディレクトリ名
-
指定されたディレクトリにファイルが伝送されたのを契機にプログラムを起動する
-
自動起動プログラムは,登録したユーザに対し,伝送が完了したのを契機に実行されます。特定のユーザではなく,登録された全ユーザに対して,自動起動をしたいときには,[ユーザ名]に「.default(デフォルトユーザ)」を登録します。
項目 |
設定内容 |
---|---|
ユーザ名 |
自動起動プログラムを登録するユーザ名を指定します。この項目は省略できません。 登録できるユーザは,次のユーザです。
|
ファイル名/ディレクトリ名 ((1〜256バイトの文字列)) |
自動起動の対象になるファイル名,またはディレクトリ名を指定します。 ファイル名を指定する場合は,フルパスまたはファイル名だけを指定します。ディレクトリ名を指定する場合は,フルパスを指定します。 ファイル名またはディレクトリ名の最後に"/"を入れた場合,最後の"/"に限り無効として削除します。 ファイル名またはディレクトリ名のパスは,シンボリックリンクを含むパスではなく,実パスを指定してください。 この項目は省略できません。 |
正常時に起動するプログラム名 異常時に起動するプログラム名 ((2〜256バイトの文字列)) |
伝送の正常終了時,または異常終了時に,起動するプログラムを指定します。 起動するプログラム名は,フルパスで指定します。プログラムの起動時に,伝送情報を引数として渡せます。詳しくは,「引数キーワード」を参照してください。
|
- プログラム起動時の優先順位について
-
自動起動プログラムが複数登録されている場合,起動条件となる情報(ファイル名,ディレクトリ名)は同じで,起動するプログラムが異なるということがあります。その場合,次のような優先順位で検索し,最初の条件に合ったプログラムだけを起動します。優先順位を次の図に示します。
図3‒1 自動起動プログラム起動時の優先順位 - [正常時/異常時に起動するプログラム名]の指定について
-
引数に「\」が含まれている場合,プログラムによっては,「\」をエスケープ記号と解釈することがありますので,注意してください。
- 引数キーワード
-
自動起動プログラムに,引数キーワードを指定して,ユーザプログラムに全伝送終了情報を渡せます。また,キーワードを指定することで,個別の伝送終了情報を渡すこともできます。キーワードの一覧を次の表に示します。
表3‒4 引数キーワード一覧 引数キーワード
キーワード出力内容
クライアント(発信)
サーバ(着信)
ALL
すべての項目を出力
○
○
TRNO
伝送番号
○
○
TCNO
接続番号
○
○
CARD
カード名
○
−
HOST
接続先ホスト名称またはIPアドレス
○
−
接続クライアントIPアドレス
−
○
PORT
接続先ホストポート番号
○
−
USER
ログインユーザ名
○
○
TRTP
伝送モード[ascii=1,binary=2]
○
○
TRCM
伝送コマンド[send=1,recv=2,append=3]
○
○
COMP
圧縮モード[stream=1,compress=2]
○
○
LCFN
ローカルファイル名
○
○
RMFN
リモートファイル名
○
−
STTM
伝送開始時間(time( )の戻り値)
○
○
SPTM
伝送終了時間(time( )の戻り値)
○
○
TRSZ
伝送データサイズ(バイト)
○
○
CMNT
コメント
○
−
TRST
伝送終了状態[成功=1,失敗=2]
○
○
ERKD
エラー種別[システムコールエラー=1,論理エラー=2,プロトコルエラー=3,強制終了エラー=4,SSL通信エラー=5]
○
○
SYCN
システムコール名称
○
○
ERNO
エラー番号
○
○
PLMG
プロトコルメッセージ
○
−
SSLE
SSL通信エラー番号
○
○
- (凡例)
-
○:有効
−:無効
- キーワードの指定について
-
上記表以外のものを指定した場合,または無効なキーを指定した場合は,指定したキーワードがユーザプログラムに直接渡されます。
- 引数指定例
-
ftsautomaコマンドで登録する場合に,引数を指定した例を次に示します。指定値は,「"(引用符)」で囲む必要があります。
指定例
"/users/keiri/PROC TRNO USER TRCM COMP TRSZ"
上記の指定をした場合,次の形式でユーザプログラムを実行します。
/users/keiri/PROC△12△keiri△1△2△30000(△:半角スペース)
-
伝送の接続番号:12
-
ログインユーザ名:keiri
-
伝送コマンド:send
-
圧縮モード:圧縮
-
伝送データサイズ:30,000バイト
プログラムの引数として情報を受け取れます。
-
- 標準入出力
-
標準入出力はクローズされます。なお,標準入出力をファイルに割り当てることができます。詳細については,「3.1.3 JP1/FTPの環境を環境変数で定義する」の「表3-2 環境変数一覧」に記載されている環境変数名JP1FTS_AUTO_STDIOを参照してください。
- プロセスの環境
-
ログインしたユーザの.profileで設定される環境ではなく,JP1/FTPデーモンの環境となります。
- 複数ファイル伝送時のプログラム起動方法
-
ワイルドカードを使用した複数ファイル伝送を行った場合,ファイル伝送の数だけ自動起動プログラムが起動します。自動起動プログラムに引き継ぐ情報は,1伝送毎の情報だけです。すべての伝送情報を一度に自動起動プログラムへ引き継ぐ事はできません。
- シグナルの抑止
-
次のシグナルをsighold()でマスクした状態で起動します。そのため,自動起動プログラムが次のシグナルを受信した場合,次のシグナルは保留されます。
-
SIGTERM
-
SIGCHLD
-
SIGHUP
環境変数JP1FTS_AUTO_SIGNALMASK_DELETEを使用することで,自動起動プログラムで,上記のシグナルを受信できるようになります。
また,Linuxでは,環境変数JP1FTS_AUTO_SIGNALMASK_DELETEを使用しない場合,プログラム起動時,SIGCHLDシグナルに対するアクションがSIG_IGNに設定されています。このため,自動起動プログラムでsystem()関数を呼出すと,system()関数はエラーリターン(errno = 10)します。このエラーを回避するには,system()関数を呼出す前にSIGCHLDシグナルに対するアクションをSIG_DFLに設定してください。
-
自動起動プログラムを登録するコマンドの例を,次に示します。
次の情報を登録します。
-
対象はファイル(file)
-
ユーザ名は「keiri」
-
ファイル/ディレクトリ名は「file1」
-
-AS:正常時に起動するプログラム名を「/home/keiri/normal.sh」
-
-AF:異常時に起動するプログラム名を「/home/keiri/abnormal.sh」
ftsautomaコマンドについては,「6. コマンド」の「ftsautoma−自動起動プログラムの登録・削除・表示−」を参照してください。