ページの先頭行へ戻る
Systemwalker Runbook Automation V14g 運用ガイド
Systemwalker

3.3.3 Perlスクリプトの構成例

運用操作部品におけるPerlスクリプトの構成について、“ローカルサーバ上で任意のコマンドを実行する”運用操作部品を作成する場合を例に説明します。

注意

Systemwalker Runbook Automationが提供するPerl用のライブラリは、入力情報ライブラリだけです。

Perlスクリプトで運用操作部品を作成する際には、必要に応じてPerlライブラリを入手し、管理サーバに導入してください。

use Swrba_Input;

必須

(1)利用するライブラリの読み込み

use strict;
use warnings;
use IPC::Open3;
use Symbol;
use utf8;
use Encode;
use Encode::Guess qw/cp932 euc-jp 7bit-jis/;

任意

binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';

任意

(2)部品実行結果の出力文字コードを設定

my $input = new Swrba_Input;

if($#ARGV != 1){
exit 198;
}

if($ARGV[0] ne "-input"){
exit 198;
}

if( ! -f $ARGV[1] ){
exit 198;
}

必須

(3)入力情報ファイルから入力情報の抽出準備

my $hostname =
$input->input_analysis($ARGV[1],"hostname");
if($hostname eq ""){
exit 197;
}

my $commandline =
$input->input_analysis($ARGV[1],"commandline");
if($commandline eq ""){
exit 197;
}

任意

(4)入力情報を抽出

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;

close $cmd_stdin;
close $cmd_stdout;
close $cmd_stderr;

任意

(5)実行結果の出力

exit $child_exit_status;

任意

(6)スクリプトの終了

3.3.3.1 スクリプトの詳細

以下に、上記スクリプトファイルの詳細について説明します。

(1) 利用するライブラリの読み込み

運用操作部品で利用するライブラリを読み込みます。利用可能なライブラリには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に変換しています

(2) 部品実行結果の出力文字コードを設定

運用操作部品の実行結果の文字コード種別を設定します。

Perlスクリプト

説明

binmode STDOUT, ':utf8';

binmode STDERR, ':utf8';

標準出力と標準エラー出力を、UTF-8で出力するよう設定します。

(3) 入出力情報ファイルから入力情報の抽出準備

入力情報を抽出する準備処理については、必ず記載します。

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;

}

入力パラメーターとして扱うファイルが存在するかどうかを確かめます

(4) 入力情報の抽出

入力情報ファイルから実行に必要な入力情報を抽出します。

Perlスクリプト

説明

my $commandline =

$input->input_analysis($ARGV[1]," commandline ");

if(defined($commandline)){

exit 197;

}

入力情報ファイルからコマンドラインの情報を抽出しています。

(5) 実行結果の出力

実行した結果を出力します。

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;

部品の復帰値を受け取ります。

(6) スクリプトの終了

Perlスクリプトを終了します。

Perlスクリプト

説明

exit $child_exit_status;

受け取った復帰値でスクリプトを終了します。

3.3.3.2 運用操作部品の復帰値について

独自に開発した運用操作部品には、復帰値を0~255の範囲で設定できます。ただし、156~160、171~240の復帰値はSystemwalker Runbook Automationで予約されているため、この範囲の復帰値は設定しないでください。また、161~170の復帰値を設定するとリトライを実施します。リトライ回数は、自動運用プロセスの開発時に運用操作部品の入出力情報として設定します。

(例) 復帰値“150”を設定:exit 150

3.3.3.3 運用操作部品の格納場所とファイル名について

独自に開発した運用操作部品は、作成後、運用操作部品の登録を行うことで、管理サーバの以下の場所に格納されます。

【Windows】

<インストールパス>\SWRBAM\etc\share\rbaope\bin\parts\guest\E0\

【Linux】

/opt/FJSVswrbam/etc/share/rbaope/bin/parts/guest/E0


Perlスクリプトのファイル名は、以下のようにしてください。

また、製品で標準提供される運用操作部品のRubyスクリプトファイル名には、接頭語に“swrba_”がついています。保守性を考慮して、独自に開発した運用操作部品のPerlスクリプトファイル名の接頭語には、“swrba_”をつけないことを推奨します。