運用操作部品におけるPerlスクリプトの構成について、“ローカルサーバ上で任意のコマンドを実行する”運用操作部品を作成する場合を例に説明します。
注意
Systemwalker Runbook Automationが提供するPerl用のライブラリは、入力情報ライブラリだけです。
Perlスクリプトで運用操作部品を作成する際には、必要に応じてPerlライブラリを入手し、管理サーバに導入してください。
use Swrba_Input; | 必須 | (1)利用するライブラリの読み込み |
use strict; | 任意 | |
binmode STDOUT, ':utf8'; | 任意 | (2)部品実行結果の出力文字コードを設定 |
my $input = new Swrba_Input; | 必須 | (3)入力情報ファイルから入力情報の抽出準備 |
my $hostname = | 任意 | (4)入力情報を抽出 |
my ($cmd_stdout, $cmd_stderr, $cmd_stdin) = (gensym, gensym, gensym); | 任意 | (5)実行結果の出力 |
exit $child_exit_status; | 任意 | (6)スクリプトの終了 |
以下に、上記スクリプトファイルの詳細について説明します。
運用操作部品で利用するライブラリを読み込みます。利用可能なライブラリにはPerlの標準提供ライブラリとライブラリリファレンスに記載されているライブラリがあります。製品が提供するライブラリの詳細については、“Systemwalker Runbook Automation リファレンスガイド”の“製品が提供するライブラリ”を参照してください。
Perlスクリプト | 説明 |
---|---|
use Swrba_Input; | 入力情報を格納したファイルを解析するためのライブラリを定義しています。本ライブラリは必ず定義します。 |
use Symbol; use utf8; use Encode; use Encode::Guess qw/cp932 euc-jp 7bit-jis/; | 部品の標準出力、標準エラー出力の文字コードの変換を行うためのライブラリを定義しています。 ここでは、Perl標準ライブラリを使用しています。 これらのライブラリが管理サーバに導入されていない場合、ライブラリを入手し導入する必要があります。 本作成例では、文字コードをUTF-8に変換しています |
運用操作部品の実行結果の文字コード種別を設定します。
Perlスクリプト | 説明 |
---|---|
binmode STDOUT, ':utf8'; binmode STDERR, ':utf8'; | 標準出力と標準エラー出力を、UTF-8で出力するよう設定します。 |
入力情報を抽出する準備処理については、必ず記載します。
Perlスクリプト | 説明 |
---|---|
my $input = new Swrba_Input; | 変数名input を局所変数として宣言します |
if($#ARGV != 1){ exit 198; } if($ARGV[0] ne "-input"){ exit 198; } | 扱うパラメーターの形式が正しいかどうかを確認します。 |
if( ! -f $ARGV[1] ){ exit 198; } | 入力パラメーターとして扱うファイルが存在するかどうかを確かめます |
入力情報ファイルから実行に必要な入力情報を抽出します。
Perlスクリプト | 説明 |
---|---|
my $commandline = $input->input_analysis($ARGV[1]," commandline "); if(defined($commandline)){ exit 197; } | 入力情報ファイルからコマンドラインの情報を抽出しています。 |
実行した結果を出力します。
Perlスクリプト | 説明 |
---|---|
my ($cmd_stdout, $cmd_stderr, $cmd_stdin) = (gensym, gensym, gensym); my $pid = open3( $cmd_stdin, $cmd_stdout, $cmd_stderr, $commandline); my @out = <$cmd_stdout>; my @err = <$cmd_stderr>; | 部品の標準出力、標準エラー出力を取得します。 |
foreach my $line (@out){ print STDOUT decode('Guess',$line); } | 標準出力します。 |
foreach my $line (@err){ print STDERR decode('Guess',$line); } | 標準エラー出力します。 |
waitpid( $pid, 0 ); my $child_exit_status = $? >> 8; | 部品の復帰値を受け取ります。 |
Perlスクリプトを終了します。
Perlスクリプト | 説明 |
---|---|
exit $child_exit_status; | 受け取った復帰値でスクリプトを終了します。 |
独自に開発した運用操作部品には、復帰値を0~255の範囲で設定できます。ただし、156~160、171~240の復帰値はSystemwalker Runbook Automationで予約されているため、この範囲の復帰値は設定しないでください。また、161~170の復帰値を設定するとリトライを実施します。リトライ回数は、自動運用プロセスの開発時に運用操作部品の入出力情報として設定します。
(例) 復帰値“150”を設定:exit 150
独自に開発した運用操作部品は、作成後、運用操作部品の登録を行うことで、管理サーバの以下の場所に格納されます。
【Windows】
<インストールパス>\SWRBAM\etc\share\rbaope\bin\parts\guest\E0\
【Linux】
/opt/FJSVswrbam/etc/share/rbaope/bin/parts/guest/E0
Perlスクリプトのファイル名は、以下のようにしてください。
拡張子(.pl)を含め、64バイト以内で指定します
ファイル名には、英小文字(a-z)、英大文字(A-Z)、数字(0-9)、半角ハイフン(-)、半角アンダーバー(_)およびピリオド(.)だけ使用できます
1文字目は英小文字(a-z)、英大文字(A-Z)にしてください
また、製品で標準提供される運用操作部品のRubyスクリプトファイル名には、接頭語に“swrba_”がついています。保守性を考慮して、独自に開発した運用操作部品のPerlスクリプトファイル名の接頭語には、“swrba_”をつけないことを推奨します。