4.2.8 ターミナル接続部品
機能
操作対象の機器にTelnetまたはSSHで接続し,認証できます。
Telnetで接続する場合は,必要に応じ,ユーザーIDおよびパスワードを設定してください。また,SSHで接続する場合は,認証方式としてパスワード認証,公開鍵認証またはキーボードインタラクティブ認証が選択できます。次の情報は,部品のプロパティに設定するか,[エージェントレス接続先定義]エリアで設定する必要があります。
-
認証方式(パスワード認証,公開鍵認証またはキーボードインタラクティブ認証)
-
パスワード認証およびキーボードインタラクティブ認証に必要な情報(ユーザーID,パスワード)
-
公開鍵認証に必要な情報(ユーザーID)
ターミナルコマンド実行部品に指定したコマンドは,ターミナル接続部品で認証したユーザーの権限で実行されます。コマンドを管理者権限で実行したい場合は,ターミナルコマンド実行部品で管理者権限に昇格するコマンドを実行してください。
実行時の前提条件
-
JP1/AOサーバとの通信に使用できるプロトコルは,プロパティ「protocol」で指定されたプロトコルとなります。
-
エージェントレス接続先として使用できる操作対象の機器については,「付録A.1(3) エージェントレス接続先として使用できる操作対象の機器」を参照してください。
-
Telnetで接続する場合は,ユーザーIDおよびパスワードが入力待ち状態であることを検知するため,次のどちらかのファイルを,必要に応じて設定してください。なお,両方のファイルを設定した場合は,接続先プロパティファイル(接続先名.properties)に設定した値が適用されます。
-
接続先プロパティファイル(接続先名.properties)のtelnet.prompt.accountおよびtelnet.prompt.password
-
ユーザー設定プロパティファイル(config_user.properties)のplugin.terminal.prompt.accountおよびplugin.terminal.prompt.password
-
注意事項
-
プロパティ「readWaitTime」に指定した時間だけ,標準出力が出力されるまで待ちます。標準出力の出力が中断してから,プロパティ「readWaitTime」に指定した時間を経過すると,部品の実行がエラー終了します。そのため,プロパティ「readWaitTime」の値は,事前に確認してから指定してください。
-
標準出力の値が,プロパティ「promptPattern」に指定した正規表現パターンと合致した場合は,その時点で部品は終了します。
-
Telnetを使用して操作対象の機器に接続する場合,接続後,ユーザー設定プロパティファイル(config_user.properties)のtelnet.connect.waitに設定された時間,標準出力および標準エラー出力が返されるまで待ちます。接続するサービスがWebサーバなど,標準出力および標準エラー出力を返さない場合は,接続するサービスのポート番号を,接続先プロパティファイル(接続先名.properties)のtelnet.noStdout.port.listに設定してください。設定した場合,接続後,標準出力および標準エラー出力が返されるのを待たないで,部品の実行が終了します。
-
部品の実行中にタスクを実行停止した場合は,ターミナル接続部品の処理が完了してからタスクの状態が「失敗」または「正常終了」になります。その後,セッションおよびトークンは破棄されます。部品の実行が終了したときのステップおよびタスクの状態は,ステップの戻り値および後続ステップ実行条件によって決まります。後続ステップ実行条件は,[ステップ作成]ダイアログボックスまたは[ステップ編集]ダイアログボックスで設定できます。
-
部品の実行中にタスクを強制停止した場合は,標準出力の読み込みおよびプロンプトの検出処理が中断され,タスクの状態が「失敗」になります。その後,セッションおよびトークンは破棄されます。なお,[タスク]画面の[フロー]エリアに表示されるステップの戻り値は,80になります。タスクログに出力される戻り値は,強制停止したタイミングによって異なります。
-
ターミナル接続部品の後続ステップの状態が「失敗」の場合,Telnet接続またはSSH接続が切断されます。そのため,[失敗したステップからリトライ]または[失敗した次のステップからリトライ]でタスクをリトライすると,ターミナルコマンド実行部品の処理は失敗します。ただし,繰り返し実行部品の配下に部品がある場合で,繰り返し実行部品からリトライするときは対象外です。
-
Telnetで認証に失敗した場合でも接続は維持されます。接続を切断するには,ターミナル切断部品を実行してください。ただし,タスクの状態が「失敗」または「正常終了」になった場合は,自動的に切断されるため,ターミナル切断部品の実行は不要です。
-
ターミナル接続部品の標準出力および標準エラー出力は,JP1/AOのステップの標準出力として出力されます。標準出力および標準エラー出力のサイズは,JP1/AOが受信したバイト数の合計になります。TelnetサーバまたはSSHサーバの設定によって,改行文字LFがCR+LFに置き換わる場合は,改行文字を2バイトとして計算してください。標準出力および標準エラー出力の合計が100KBを超えた場合の処理の実行結果については,製品サポートの対象外となります。事前に,標準出力および標準エラー出力の合計が100KBを超えていないことを確認してください。
-
Telnetでは認証エラーを検出できません。そのため,プロパティ「stdoutPattern1〜3」に,標準出力や標準エラー出力の内容から認証エラーを検出するための正規表現パターンを指定してください。
バージョン
02.00.00
タグ
Terminal
戻り値
戻り値 |
説明 |
---|---|
0〜63 |
標準出力および標準エラー出力がプロパティ「returnCodePattern」に指定した正規表現パターンと合致した場合は,プロパティ「returnCode」に指定した戻り値を返す。ただし,標準出力および標準エラー出力がプロパティ「returnCodePattern」に指定した正規表現パターンと合致しなかった場合は,プロパティ「defaultReturnCode」に指定した戻り値を返す。そのため,戻り値の意味は,この部品を使用するサービステンプレートごとに異なる。 |
65 |
JP1/AOサーバとの接続に失敗した。例えば,部品実行中にJP1/AOサーバが停止された場合が該当する。 |
66 |
次のユーザーがJP1ユーザーにマッピングされている。
|
68 |
対象のジョブ実行IDに関する情報がない。 |
69 |
タスク処理エンジンの環境変数の取得に失敗した。 |
70 |
操作対象の機器への接続に失敗した。 |
76 |
接続タイムアウトが発生した。 |
77 |
操作対象の機器のホスト名解決に失敗した。 |
78 |
プロトコルがSSHの場合に,次のどれかの理由で操作対象の機器との認証に失敗した。
|
80 |
タスクの実行を停止した。 |
81 |
部品が不正な状態で呼び出された。 |
82 |
タスク処理エンジンからの要求メッセージを正しくパースできない。 |
83 |
JP1/AOサーバの環境が壊れている。 |
84 |
指定された部品の情報が取得できない。 |
86 |
指定したプロパティ値に誤りがある。 |
87 |
標準出力および標準エラー出力のタイムアウトが発生した。 |
88 |
トークンの数が上限値(1タスク当たり99個)に達している。 標準出力および標準エラー出力の合計が100KBを超えた。 |
127 |
そのほかのエラーが発生した。 |
プロパティ一覧
プロパティを次の表に示します。
プロパティキー |
プロパティ名 |
説明 |
デフォルト値 |
入出力種別 |
必須区分 |
---|---|---|---|---|---|
destinationHost |
対象機器 |
操作対象の機器のIPv4アドレス,IPv6アドレスまたはホスト名を1,024文字 以内で指定します。なお,複数のIP アドレスまたはホスト名は指定できません。 |
− |
入力 |
○ |
protocol |
プロトコル |
操作対象の機器との接続に使用するプロトコルを指定します。指定できるプロトコルを次に示します。
|
Telnet |
入力 |
△ |
credentialType |
認証種別 |
コマンドまたはスクリプト実行時の認証種別について,次のどちらかを指定します。
|
− |
入力 |
○ |
account |
ユーザーID |
操作対象の機器にログインするためのユーザーIDを256文字以内で指定します。 次の値をどちらも指定している場合は,指定が必須です。
|
− |
入力 |
△ |
password |
パスワード |
操作対象の機器にログインするためのパスワードを256文字以内で指定します。 次の条件をすべて満たしている場合は,指定が必須です。
操作対象の機器のOSがUNIXで,プロパティ「publicKeyAuthentication」に「true」を指定している場合は,値を指定しても無視されます。ただし,予約プロパティ「reserved.terminal.password」の参照先としては指定できます。 |
− |
入力 |
△ |
suPassword |
管理者のパスワード |
管理者権限に昇格する場合に必要なパスワードを256文字以内で指定します。 ターミナルコマンド実行部品のコマンドラインに,予約プロパティ「reserved.terminal.suPassword」を指定すると,プロパティ「suPassword」の値が設定されます。 |
− |
入力 |
△ |
publicKeyAuthentication |
SSH公開鍵認証設定 |
操作対象の機器のOSがUNIXで,プロトコルがSSHの場合,公開鍵認証を使用するかどうかについて次のどちらかを指定します。大文字と小文字は区別しません。このプロパティに値を指定しない場合は,「false」として扱われます。操作対象の機器のOSがWindowsの場合は,指定不要です。
|
false |
入力 |
△ |
keyboardInteractiveAuthentication |
SSHキーボードインタラクティブ認証設定 |
操作対象の機器のOSがUNIXの場合,接続にキーボードインタラクティブ認証を使用するかどうかについて次のどちらかを指定します。大文字と小文字は区別しません。このプロパティに値を指定しない場合は,「false」として扱われます。操作対象の機器のOSがWindowsの場合は,指定不要です。 ただし,プロパティ「keyboardInteractiveAuthentication」の値が有効になるのは,「publicKeyAuthentication」に「false」を指定した場合です。「publicKeyAuthentication」に「true」を指定した場合,「keyboardInteractiveAuthentication」に「true」を指定しても,公開鍵認証が設定されます。
|
false |
入力 |
△ |
port |
ポート番号 |
操作対象の機器との接続に使用するポート番号を指定します。 |
− |
入力 |
△ |
charset |
文字セット |
操作対象の機器への標準入力の書き込みと,標準出力および標準エラー出力の読み込みに使用する文字セットを指定します。操作対象の機器にログインするユーザーに設定されている文字セットと,同一の文字セットを指定してください。大文字と小文字は区別されません。指定できる文字セットを次に示します。
|
− |
入力 |
△ |
lineEnd |
行端文字 |
ターミナル接続部品のプロパティ「protocol」で「Telnet」を指定した場合,プロパティ「account」および「password」で設定した値に付加する行端文字を指定します。指定できる行端文字を次に示します。
付加する行端文字が,0x0Dの場合は「CR」,0x0Aの場合は「LF」,0x0D0Aの場合は「CRLF」を指定します。 |
CR |
入力 |
△ |
promptPattern |
プロンプトパターン |
標準出力および標準エラー出力に,プロンプト文字列が出力されたことを検出するための正規表現パターンを1,024文字以内で指定します。このプロパティは,操作対象の機器に接続したあと,コマンドが実行できる状態であることを判定するために使用します。正規表現パターンはPCREに従って指定してください。指定した正規表現と合致した場合は,その時点で終了します。正規表現パターンと合致しない場合,標準出力および標準エラー出力の出力後,プロパティ「readWaitTime」に設定した時間が経過すると,部品実行がエラー終了します。 |
− |
入力 |
○ |
readWaitTime |
標準出力待ち時間 |
操作対象の機器にログインする際に,実行時の標準出力または標準エラー出力が出力されてから,次の標準出力または標準エラー出力が出力されるまでのタイムアウト時間を,1〜86,400,000の範囲で指定します。値はミリ秒単位で指定してください。 |
60000 |
入力 |
△ |
token |
トークン文字列 |
セッションを識別するためのトークン文字列が出力されます。ターミナルコマンド実行部品と,ターミナル切断部品のプロパティ「token」には,このプロパティに出力される文字列を指定します。 |
− |
出力 |
△ |
outputCondition※2 |
標準出力プロパティ出力条件 |
プロパティ「stdoutProperty1〜3」に値を出力する条件を指定します。 指定できる値を次に示します。
|
always |
入力 |
○ |
stdoutPattern1 |
標準出力パターン1 |
プロパティ「stdoutProperty1」に出力する標準出力および標準エラー出力の正規表現パターンを1,024 文字以内で指定します。正規表現パターンはPCRE に従って指定してください。※3 設定できる文字列は1,024 文字までです。1,025 文字以降は切り捨てられます。 |
− |
入力 |
△ |
stdoutProperty1 |
標準出力プロパティ1 |
プロパティ「stdoutPattern1」で切り出した文字列が出力されます。 |
− |
出力 |
△ |
stdoutPattern2 |
標準出力パターン2 |
プロパティ「stdoutProperty2」に出力する標準出力および標準エラー出力の正規表現パターンを1,024 文字以内で指定します。正規表現パターンはPCRE に従って指定してください。※3 設定できる文字列は1,024 文字までです。1,025 文字以降は切り捨てられます。 |
− |
入力 |
△ |
stdoutProperty2 |
標準出力プロパティ2 |
プロパティ「stdoutPattern2」で切り出した文字列が出力されます。 |
− |
出力 |
△ |
stdoutPattern3 |
標準出力パターン3 |
プロパティ「stdoutProperty3」に出力する標準出力および標準エラー出力の正規表現パターンを1,024 文字以内で指定します。正規表現パターンはPCRE に従って指定してください。※3 設定できる文字列は1,024 文字までです。1,025 文字以降は切り捨てられます。 |
− |
入力 |
△ |
stdoutProperty3 |
標準出力プロパティ3 |
プロパティ「stdoutPattern3」で切り出した文字列が出力されます。 |
− |
出力 |
△ |
defaultReturnCode |
デフォルト戻り値 |
標準出力および標準エラー出力がプロパティ「returnCodePattern」に指定した正規表現パターンと合致しなかった場合に,部品の戻り値として返される値を指定します。0〜63の範囲で指定します。 |
0 |
入力 |
△ |
returnCodePattern |
戻り値判定パターン |
標準出力および標準エラー出力の正規表現パターンを1,024 文字以内で指定します。正規表現パ ターンはPCRE に従って指定してください。指定した正規表現パターンが標準出力および標準エラー出力に合致した場合は,プロパティ「returnCode」に指定した値が返されます。 |
− |
入力 |
△ |
returnCode |
戻り値 |
標準出力および標準エラー出力がプロパティ「returnCodePattern」で設定した標準出力パターンと合致した場合の,部品の戻り値を指定します。0〜63の範囲で指定します。このプロパティを指定しない場合は,プロパティ「defaultReturnCode」に指定した値が返されます。 |
− |
入力 |
△ |
- 注※1
-
プロパティ「publicKeyAuthentication」および「keyboardInteractiveAuthentication」の両方に「false」を指定した場合,パスワード認証が設定されます。
- 注※2
-
部品のバージョンが02.00.00未満の場合,このプロパティは実装されていませんが,「patternMatch」を指定した場合と同じ動作になります。最新の部品にバージョンアップした場合,このプロパティのデフォルト値に「always」が指定されて動作が変わるので,必要に応じて値を設定し直してください。
- 注※3
-
-
正規表現により抽出されるのは,括弧でグループ化された部分です。
-
正規表現に複数のグループを指定した場合,最初のグループに該当する範囲だけが部品の出力プロパティに格納されます。
-
正規表現に複数の範囲が該当する場合,最初に該当する範囲だけが部品の出力プロパティに格納されます。複数の範囲を格納することはできません。
-
任意のコマンドの実行結果など改行を含む文字列から抽出する場合,改行までの文字列を抽出するには,「(.*)」と指定してください。
-
プロパティ「stdoutPattern1〜3」および「stdoutProperty1〜3」の使用例
標準出力および標準エラー出力をプロパティ「stdoutPattern1〜3」の値と照合した結果を,プロパティ「stdoutProperty1〜3」にそれぞれ格納できるようになります。次の図に,「stdoutPattern1」に「aaabbb(.*)」を指定した場合のデータの流れを示します。
標準出力「aaabbbccc」に対して,「stdoutPattern1」で定義しているように,標準出力の「aaabbb」より後ろの値(ccc)が抽出されます。抽出された値は,プロパティ「stdoutProperty1」に格納されます。
プロパティ「stdoutPattern1〜3」で指定した正規表現が標準出力と合致せず値を抽出できなかった場合に,プロパティ「stdoutProperty1〜3」に値を格納するかどうかは,プロパティ「outputCondition」で指定できます。
部品プロパティに関連する情報を複数個所で指定した場合の優先順位
部品プロパティに関連する情報は,接続先プロパティファイル(接続先名.properties)やユーザー設定プロパティファイル(config_user.properties)でも設定できます。複数個所で値が設定されている場合は,次の優先順位の設定値が適用されます。
設定内容 |
設定個所 |
プロパティキー |
優先順位 |
デフォルト値 |
---|---|---|---|---|
Telnetポート番号 |
部品プロパティ |
port |
1 |
− |
接続先プロパティファイル(接続先名.properties) |
telnet.port |
2 |
− |
|
ユーザー設定プロパティファイル(config_user.properties) |
telnet.port.number |
3 |
23 |
|
SSHポート番号 |
部品プロパティ |
port |
1 |
− |
接続先プロパティファイル(接続先名.properties) |
ssh.port |
2 |
− |
|
ユーザー設定プロパティファイル(config_user.properties) |
ssh.port.number |
3 |
22 |
|
文字セット名※ |
部品プロパティ |
charset |
1 |
− |
接続先プロパティファイル(接続先名.properties) |
terminal.charset |
2 |
− |
- (凡例)
-
−:デフォルト値は空です。
- 注※
-
部品プロパティおよび接続先プロパティファイル(接続先名.properties)に値が指定されていない場合は,「UTF-8」が設定されます。
関連トピック
-
マニュアル「JP1/AO 構築ガイド」−「ユーザー設定プロパティファイル(config_user.properties)」および「接続先プロパティファイル(接続先名.properties)」のトピック
-
マニュアル「JP1/AO 構築ガイド」−「SSH接続で公開鍵認証を設定する手順」のトピック
- 〈この項の構成〉
(1) ターミナル接続部品の使用例
Telnetでの認証エラーを判定する場合の例
部品のプロパティを使用して,次の処理をしたい場合を例に説明します。
-
ログインに成功した場合は,戻り値を0で返す。
-
ログインに失敗した場合は,戻り値を1で返す。
-
ログインに成功した場合,最終ログイン日時と接続元の情報をプロパティ「stdoutProperty1」に格納する。
これらの処理をしたい場合は,部品のプロパティに次のような値を指定してください。
プロパティキー |
指定値の例 |
指定値の意味 |
---|---|---|
promptPattern |
^¥[prompt¥]|^Login incorrect |
標準出力の内容が,「[prompt]」または「Login incorrect」と合致した場合に部品を終了し,戻り値を判定する。 |
stdoutPattern1 |
^Last login:(.*) |
標準出力の内容で,「Last login:」より後ろの文字列をプロパティ「stdoutProperty1」に格納する。 |
defaultReturnCode |
0 |
標準出力の内容が,プロパティ「returnCodePattern」に指定した値と合致しなかった場合に,戻り値0を返す。 |
returnCodePattern |
^ Login incorrect |
標準出力の内容が,「Login incorrect」と合致した場合,プロパティ「returnCode」で指定した戻り値を返す。 |
returnCode |
1 |
標準出力の内容が,プロパティ「returnCodePattern」に指定した値と合致した場合に,戻り値1を返す。 |
このように部品のプロパティを指定している場合,標準出力が次に示す内容だったときの動作について説明します。
- ログインに成功した場合の例
-
標準出力の内容がプロパティ「promptPattern」に指定した値と合致するため,ターミナル接続部品の戻り値を判定します。このとき,プロパティ「returnCodePattern」に指定した値とは合致しないため,部品の戻り値は,プロパティ「defaultReturnCode」に指定した値(0)になります。
また,プロパティ「stdoutPattern1」で切り出された文字列(Mon Mar 18 13:21:13 2013 from ServerA)が,プロパティ「stdoutProperty1」に格納されます。
- ログインに失敗した場合の例
-
標準出力の内容がプロパティ「promptPattern」に指定した値と合致するため,ターミナル接続部品の戻り値を判定します。このとき,プロパティ「returnCodePattern」に指定した値と合致するため,部品の戻り値は,プロパティ「returnCode」に指定した値(1)になります。
SSHでの認証エラーが発生したかどうかを確認する場合
プロトコルに「SSH」を指定した場合,ターミナル接続部品の戻り値で認証エラーを確認できます。
認証エラーは,[エージェントレス接続先定義]エリアで設定した認証情報,またはターミナル接続部品の認証情報に関するプロパティ(「account」,「password」,「publicKeyAuthentication」,および「keyboardInteractiveAuthentication」)を使用して検出されます。このとき,[エージェントレス接続先定義]エリアで設定したスーパーユーザーのパスワード,またはターミナル接続部品のプロパティ「suPassword」は使用しません。
なお,認証エラーの場合は,部品の戻り値は78になります。ただし,プロパティ「credentialType」に「destination」を指定している場合で,[エージェントレス接続先定義]エリアの認証情報が正しく設定されていないとき,部品の戻り値は70になります。
HTTPサーバなど標準出力を返さないサービスに接続する場合の例
標準出力を返さないサービスに接続する場合を例に説明します。なお,接続先プロパティファイルのtelnet.noStdout.port.list(接続先名.properties)に「80」を指定しているものとします。
このとき,次に示す部品のプロパティに指定した値は無視され,部品の戻り値は0になります。
-
credentialType
-
account
-
password
-
suPassword
-
publicKeyAuthentication
-
keyboardInteractiveAuthentication
-
charset
-
lineEnd
-
promptPattern
-
readWaitTime
-
stdoutPattern1〜3
-
defaultReturnCode
-
returnCodePattern
-
returnCode