(57)【要約】【課題】管理者による作業効率の向上を図ること。【解決手段】生成装置１００は、コマンドと、コマンドに対応付けて入力された引数と、を含む実行履歴が記憶されたコマンド実行ログ１０１を取得する。生成装置１００は、コマンドリスト１０２を参照して、取得したコマンド実行ログ１０１から、実行履歴におけるコマンド「ｄｅｐｌｏｙ」と引数「Ｓｅｒｖｅｒ０１」とを特定する。生成装置１００は、特定したコマンド「ｄｅｐｌｏｙ」と、特定した引数「Ｓｅｒｖｅｒ０１」を置き換えた変数「＄ＳＥＲＶＥＲ０１」と、に基づいて、シェルスクリプト１０３を生成する。【選択図】図１
2018063496.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
コマンドと前記コマンドに対応付けられた引数とを含む実行履歴を記憶したコマンド実行ログを取得し、
コマンドが記憶されたコマンドリストを参照して、取得した前記コマンド実行ログから、前記実行履歴における前記コマンドと前記引数とを特定し、
特定した前記コマンドと、特定した前記引数を置き換えた変数とに基づいて、前記変数に設定される値を引数として前記コマンドを実行可能なプログラムを生成する、
処理を実行させることを特徴とする生成プログラム。
【請求項２】
前記コンピュータに、
前記変数と、特定した前記引数と、を対応付けた対応情報を生成する、
処理を実行させることを特徴とする請求項１に記載の生成プログラム。
【請求項３】
前記コマンドリストは、前記コマンドと、前記コマンドに関するコメント情報と、を対応付けて記憶し、
前記対応情報を生成する処理は、
前記コマンドリストを参照して、前記変数と、特定した前記引数と、特定した前記引数に対応する前記コマンドに対応付けられた前記コメント情報と、を対応付けた前記対応情報を生成する、
ことを特徴とする請求項２に記載の生成プログラム。
【請求項４】
前記コマンド実行ログは、連続して実行された複数のコマンドを含み、
前記コマンドリストは、前記複数のコマンドが記憶され、
前記コマンドと前記引数とを特定する処理は、
前記コマンドリストを参照して、前記コマンド実行ログから、前記複数のコマンドのそれぞれのコマンドについて、前記コマンドと前記コマンドに対応付けて入力された引数とを特定し、
前記プログラムを生成する処理は、
前記複数のコマンドのそれぞれのコマンドについて、特定した前記コマンドと、特定した前記引数を置き換えた前記変数とを含む実行部分に基づいて、前記複数のコマンドの実行順に従って前記コマンドを実行可能なプログラムを生成する、
ことを特徴とする請求項１に記載の生成プログラム。
【請求項５】
前記コンピュータに、
前記コマンドリストを参照して、前記複数のコマンドのそれぞれのコマンドについて、特定した前記引数と、前記変数と、を対応付けた対応情報を生成する、
処理を実行させることを特徴とする請求項４に記載の生成プログラム。
【請求項６】
前記対応情報を生成する処理は、
前記コマンドリストを参照して、特定した前記引数と、前記変数と、の組み合わせを、特定した前記引数に対応する前記コマンドの実行順に従って並べた前記対応情報を生成する、
ことを特徴とする請求項５に記載の生成プログラム。
【請求項７】
前記コマンドリストは、前記複数のコマンドのそれぞれのコマンドについて、前記コマンドと、前記コマンドに関するコメント情報と、を対応付けて記憶し、
前記対応情報を生成する処理は、
前記コマンドリストを参照して、前記複数のコマンドのそれぞれのコマンドについて、前記変数と、特定した前記引数と、特定した前記引数に対応する前記コマンドに対応付けられた前記コメント情報と、を対応付けた前記対応情報を生成する、
ことを特徴とする請求項５に記載の生成プログラム。
【請求項８】
前記プログラムを生成する処理は、
前記複数のコマンドの実行順に従って、コマンドと、特定した前記引数のうちの同一値の引数を同一の変数に置き換えた前記コマンドに対応付けられた引数とを並べた前記プログラムを生成し、
前記対応情報を生成する処理は、
前記コマンドリストを参照して、前記変数と特定した前記引数との組み合わせに、特定した前記引数に対応する前記コマンドに対応付けられた前記コメント情報を、前記複数のコマンドの実行順に並べたコメント情報群を対応付けた前記対応情報を生成する、
ことを特徴とする請求項７に記載の生成プログラム。
【請求項９】
前記コマンド実行ログは、前記複数のコマンドのそれぞれのコマンドの実行開始時刻を示す文字列および実行終了時刻を示す文字列を含み、
前記コンピュータに、
前記コマンド実行ログを参照して、前記複数のコマンドのそれぞれのコマンドについて、特定した前記コマンドの前記実行開始時刻を示す文字列および前記実行終了時刻を示す文字列に基づいて、特定した前記コマンドの実行に要した時間を算出し、
特定した前記コマンドについて算出した前記時間の合計値を算出し、
算出した前記合計値を前記プログラムに関連付けて出力する、
処理を実行させることを特徴とする請求項４〜８のいずれか一つに記載の生成プログラム。
【請求項１０】
コンピュータが、
コマンドと前記コマンドに対応付けられた引数とを含む実行履歴を記憶したコマンド実行ログを取得し、
コマンドが記憶されたコマンドリストを参照して、取得した前記コマンド実行ログから、前記実行履歴における前記コマンドと前記引数とを特定し、
特定した前記コマンドと、特定した前記引数を置き換えた変数とに基づいて、前記変数に設定される値を引数として前記コマンドを実行可能なプログラムを生成する、
処理を実行することを特徴とする生成方法。
【請求項１１】
コマンドと前記コマンドに対応付けられた引数とを含む実行履歴を記憶したコマンド実行ログを取得し、
コマンドが記憶されたコマンドリストを参照して、取得した前記コマンド実行ログから、前記実行履歴における前記コマンドと前記引数とを特定し、
特定した前記コマンドと、特定した前記引数を置き換えた変数とに基づいて、前記変数に設定される値を引数として前記コマンドを実行可能なプログラムを生成する、
処理を実行する制御部を有することを特徴とする生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成プログラム、生成方法、および生成装置に関する。
【背景技術】
【０００２】
従来、サーバの管理者は、サーバへのコマンドの入力によってサーバに対して所望の作業を行う場合がある。また、管理者は、例えば、複数のコマンドをまとめたシェルスクリプトを作成することにより複数のコマンドをサーバに一括実行させることができる。シェルスクリプトにより、管理者は、作業を繰り返し行う際のコマンド入力の手間を省くことができる。また、例えば、１回または数回のように繰り返し行われない作業の場合、管理者は、シェルスクリプトの作成に手間がかかるため、シェルスクリプトを作成せずにコマンドを順に入力することにより作業を行う。
【０００３】
先行技術としては、例えば、操作ログファイルと、操作ログファイルから取得した操作ログについての実行用コマンドと実行用コマンドに応答したコンピュータでの出力内容とを解析および編集することにより操作ドキュメントを自動生成する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−９３９９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、１回または数回しか行わない予定のため、管理者が、シェルスクリプトを作成せずにコマンドを順に入力してコマンドをサーバに実行させることにより作業を行った後に、同様の作業を繰り返し行うようになる場合がある。このような場合、管理者は、例えば、同様のコマンド入力を繰り返して行うなど、作業を効率よく行うことができないという問題点がある。
【０００６】
１つの側面では、本発明は、管理者による作業効率の向上を図ることができる生成プログラム、生成方法、および生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、コマンドと前記コマンドに対応付けられた引数とを含む実行履歴を記憶したコマンド実行ログを取得し、コマンドが記憶されたコマンドリストを参照して、取得した前記コマンド実行ログから、前記実行履歴における前記コマンドと前記引数とを特定し、特定した前記コマンドと、特定した前記引数を置き換えた変数とに基づいて、前記変数に設定される値を引数として前記コマンドを実行可能なプログラムを生成する生成プログラム、生成方法、および生成装置が提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、管理者による作業効率の向上を図ることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明にかかる生成装置による一動作例を示す説明図である。
【図２】図２は、生成装置のハードウェア構成例を示す説明図である。
【図３】図３は、生成装置の機能的構成例を示すブロック図である。
【図４】図４は、コマンド実行ログ例を示す説明図である。
【図５】図５は、コマンドリスト例を示す説明図である。
【図６】図６は、テンプレートファイル例を示す説明図である。
【図７】図７は、実行部分の抽出例を示す説明図である。
【図８】図８は、シェルスクリプト例を示す説明図である。
【図９】図９は、オプション情報例を示す説明図である。
【図１０】図１０は、生成装置による生成処理手順例を示すフローチャート（その１）である。
【図１１】図１１は、生成装置による生成処理手順例を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明にかかる生成プログラム、生成方法、および生成装置の実施の形態を詳細に説明する。
【００１１】
図１は、本発明にかかる生成装置による一動作例を示す説明図である。生成装置１００は、サーバの管理者が行うコマンド実行による作業を支援するコンピュータである。生成装置１００は、管理者による管理対象のサーバそのものであってもよいし、管理対象のサーバを制御可能な装置や管理対象のサーバと通信可能な装置であってもよい。
【００１２】
ここで、コマンドとは、コンピュータに指示する特定の文字列である。コマンドを実行するとは、コマンドによって定められた処理を管理対象のサーバなどのコンピュータが実行することである。引数は、コマンドの動作を決定するためにコマンドに付加される数値や文字である。また、引数は、例えば、コマンドの実行に使用されるファイル名や出力されるメッセージなどを指定するためにコマンドに付加される数値や文字である。引数は、コマンドに対応付けて入力される。例えば、引数は、「コマンド  引数」のようにコマンドにつづいてスペース区切りで入力される。また、引数が複数ある場合、各引数は、「コマンド  引数  引数」のようにスペース区切りで入力される。ここで、コマンドの動作を決定するための数値や文字である引数については、オプションとも称する。
【００１３】
従来、サーバの管理者は、サーバへのコマンドの入力によってサーバに対して所望の作業を行う場合がある。また、管理者は、例えば、複数のコマンドをまとめたシェルスクリプトを作成することにより複数のコマンドをサーバに一括実行させることができる。シェルスクリプトにより、管理者は、作業を繰り返し行う際のコマンド入力の手間を省くことができる。例えば、ネットワークを通じて提供されるＷｅｂアプリケーションをサーバ上で利用可能な状態にするために、管理者は、Ｗｅｂアプリケーションに関するファイルをサーバ上に展開するような作業を繰り返し行う。このような場合に、管理者は、例えば、ファイルをサーバ上に展開するための複数のコマンドをまとめたシェルスクリプトを作成する。そして、管理者は、シェルスクリプトの実行時にファイル名の指定を変更して複数のファイルの各々を順位サーバ上に展開することができる。
【００１４】
また、シェルスクリプトの作成に手間がかかるため、１回または数回のように繰り返さないような作業の場合、管理者は、シェルスクリプトを作成せずにコマンドを順に入力することにより作業を行う。
【００１５】
しかしながら、１回または数回しか行わない予定のため、管理者がシェルスクリプトを作成せずにコマンドを順に入力することにより作業を行った後に、同様の作業を繰り返し行うようになる場合がある。このような場合、管理者は、例えば、同様のコマンド入力を繰り返して行うなど、作業を効率よく行うことができないという問題点がある。
【００１６】
そこで、本実施の形態では、生成装置１００は、コマンドリスト１０２を参照してコマンド実行ログ１０１内の実行履歴におけるコマンドと引数とを特定し、コマンドと引数を置換した変数とに基づきシェルスクリプト１０３を生成する。これにより、生成装置１００は、管理者によって繰り返し行われる作業の効率化を図る。管理者は、変数に新たな引数の値を与えてシェルスクリプト１０３を管理対象のサーバに実行させるだけで同様の作業を繰り返し行うことができる。したがって、生成装置１００は、管理者の作業の効率化を図ることができる。作業の効率化としては、例えば、管理者が何度もコマンドを入力する手間を省くことが挙げられる。
【００１７】
まず、生成装置１００は、コマンド実行ログ１０１を取得する。コマンド実行ログ１０１は、コマンドとコマンドに対応付けて入力された引数とを含む実行履歴が記憶される。コマンド実行ログ１０１に含まれる実行履歴は、管理者の操作入力により実行されたコマンドや、過去に自動実行されたコマンドの実行履歴である。図１の例では、コマンド実行ログ１０１は、１つのコマンドに関するログであるが、これに限らず、連続して実行された複数のコマンドが含まれていてもよい。取得方法としては、生成装置１００は、例えば、自装置が有する記憶装置から読み出すことによりコマンド実行ログ１０１を取得してもよいし、外部装置からネットワークなどを介して取得してもよい。
【００１８】
つぎに、生成装置１００は、コマンドリスト１０２を参照して、取得したコマンド実行ログ１０１から、実行履歴におけるコマンドと引数とを特定する。コマンドリスト１０２には、コマンドが記憶されてある。図１の例では、コマンドリスト１０２には、コマンド「ｄｅｐｌｏｙ」が含まれる。
【００１９】
ここで、実行履歴におけるコマンドと引数とを特定する方法として、２つの方法を例に挙げる。実行部分１１１は、コマンドと引数とを含む実行履歴の一例である。１つ目の方法としては、生成装置１００は、例えば、コマンド実行ログ１０１から、実行部分１１１を抽出した後に、コマンドリスト１０２を参照して、実行部分１１１に含まれるコマンドと引数とを特定してもよい。例えば、コマンド実行ログ１０１には、例えば、コマンドの実行に関する時刻を示す文字列が含まれ、この時刻に関する文字列に後続する文字列を実行部分１１１として抽出するなどのように予め定められた文字列以降を実行部分１１１として抽出する。コマンドの実行に関する時刻とは、コマンドの実行開始時刻やコマンドの実行終了時刻などが挙げられる。そして、生成装置１００は、抽出した実行部分１１１から、コマンドリスト１０２に記憶されたコマンドに基づいて、コマンドを特定することによりコマンドに対応付けて入力された引数を特定する。
【００２０】
また、２つ目の方法としては、生成装置１００は、例えば、コマンド実行ログ１０１から、コマンドリスト１０２を参照して、コマンドを特定する。そして、生成装置１００は、特定したコマンドに基づいて、コマンドにスペース区切りで入力された文字列を引数として特定してもよい。
【００２１】
図１の例では、生成装置１００は、実行部分１１１におけるコマンド「ｄｅｐｌｏｙ」と引数「Ｓｅｒｖｅｒ０１」とを特定する。
【００２２】
つぎに、生成装置１００は、特定したコマンドと、特定した引数を置き換えた変数と、に基づいて、変数に設定される値を引数として特定したコマンドを実行可能なプログラムを生成する。ここで生成されるプログラムは、プログラミング言語の１種であるスクリプト言語で記載されたプログラムであるため、シェルスクリプト１０３とも称する。シェルスクリプト１０３の生成方法としては、生成装置１００は、シェルスクリプト１０３の雛形のデータとなるテンプレートファイルに、コマンドと、引数を置き換えた変数と、を含む実行部分を追加することによりシェルスクリプト１０３を生成してもよい。また、生成装置１００は、生成するプログラムとして、テンプレートファイルに、コマンドと、引数を置き換えた変数と、を含む実行部分を追加することにより得られたシェルスクリプトをコンパイルして得られた実行ファイルを生成してもよい。
【００２３】
ここで、引数を変数に置き換える際に、生成装置１００は、値の異なる引数が異なる変数となるように置き換える。また、引数を変数に置き換える際に、生成装置１００は、値の同じ引数が同じ変数となるように置き換える。引数を変数に置き換える方法としては、生成装置１００は、例えば、引数を、変数であることを示す「＄」に変数名を付加させた「＄変数名」に置き換える。生成装置１００は、例えば、環境変数の命名規則の慣例に従って、引数の値を大文字に変更した文字列を変数名としてもよい。図１の例では、実行部分１１２は、コマンド「Ｄｅｐｌｏｙ」と、引数「Ｓｅｒｖｅｒ」が置き換えられた変数「＄ＳＥＲＶＥＲ０１」とを含む。そして、生成装置１００は、実行部分１１２を含むシェルスクリプト１０３を生成する。これにより、管理者は、シェルスクリプト１０３を参照することにより、引数がどの変数に置き換えられたかが分かる。また、生成装置１００は、例えば、特定した引数のうち、上述したオプション以外の引数を変数に置き換えるが、オプションを変数に置き換えなくてもよい。
【００２４】
また、管理者は、シェルスクリプト１０３の作成の手間を省くことができる。さらに、管理者は、シェルスクリプト１０３内の変数に引数の値を与えて管理対象のサーバにシェルスクリプト１０３を実行させるだけで、管理者は、過去に行った作業を簡単に繰り返すことができる。
【００２５】
（生成装置１００のハードウェア構成例）
図２は、生成装置のハードウェア構成例を示す説明図である。ここでは、生成装置１００が、サーバである場合を例に挙げてハードウェア構成を説明するが、生成装置１００は、サーバに限らず、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）や携帯端末装置であってもよく、特に限定しない。ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、ディスクドライブ２０４と、ディスク２０５と、Ｉ／Ｆ（Ｉｎｔｅｒ／Ｆａｃｅ）２０６と、を有する。
【００２６】
ＣＰＵ２０１と、ＲＯＭ２０２と、ＲＡＭ２０３と、ディスクドライブ２０４と、Ｉ／Ｆ２０６とは、バス２００によってそれぞれ接続される。
【００２７】
ここで、ＣＰＵ２０１は、生成装置１００等の全体の制御を司る。ＲＯＭ２０２は、各種プログラムを記憶する。ＲＯＭ２０２に記憶されるプログラムは、ＣＰＵ２０１にロードされることにより、コーディングされている処理をＣＰＵ２０１に実行させる。ＲＡＭ２０３はＣＰＵ２０１のワークエリアとして使用される。
【００２８】
Ｉ／Ｆ２０６は、通信回線を通じてネットワーク２０７に接続される。そして、Ｉ／Ｆ２０６は、ネットワーク２０７を介して他の装置に接続される。そして、Ｉ／Ｆ２０６は、ネットワーク２０７と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ２０６には、例えば、モデムやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）アダプタなどを採用することができる。
【００２９】
ディスクドライブ２０４は、ＣＰＵ２０１の制御に従ってディスク２０５に対するデータのリード／ライトを制御する。ディスク２０５は、ディスクドライブ２０４の制御で書き込まれたデータを記憶する。ディスク２０５としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【００３０】
また、生成装置１００は、上述した構成部のほか、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、キーボードやマウスなどの入力装置、ディスプレイなどの出力装置を有することにしてもよい。
【００３１】
また、生成装置１００は、キーボードやマウスなどの入力装置、ディスプレイなどの出力装置などを有するＰＣや端末装置とネットワークを介して接続されていてもよい。そして、管理者は、このＰＣや端末装置に対する操作入力によって生成装置１００のコマンドプロンプトに対してコマンド入力を行ってもよい。
【００３２】
また、本実施の形態では、１台のサーバに対して管理者が作業を行うためのシェルスクリプトを作成する例を説明するが、これに限らず、複数のサーバに対して管理者が同様の作業を行うためのシェルスクリプトを作成してもよい。
【００３３】
（生成装置１００の機能的構成例）
図３は、生成装置の機能的構成例を示すブロック図である。生成装置１００は、取得部３０１と、抽出部３０２と、第１生成部３０３と、第２生成部３０４と、算出部３０５と、記憶部３１０と、を有する。取得部３０１から算出部３０５までの制御部３００の処理は、例えば、図２に示すＣＰＵ２０１がアクセス可能なＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムにコーディングされている。そして、ＣＰＵ２０１が記憶装置からプログラムを読み出して、プログラムにコーディングされている処理を実行する。これにより、制御部３００の処理が実現される。また、制御部３００の処理結果は、例えば、ＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶される。
【００３４】
記憶部３１０は、例えば、ＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などによって実現される。記憶部３１０は、例えば、コマンド実行ログ３１１、コマンドリスト３１２、テンプレートファイル３１３、コマンドマニュアル情報３１４などを有する。
【００３５】
コマンド実行ログ３１１は、所定の作業を行うために連続して実行された複数のコマンドのログである。コマンド実行ログ３１１は、図１に示したコマンド実行ログ１０１のより詳細な例である。コマンド実行ログ３１１は、図４に一例を示す。コマンドリスト３１２は、複数のコマンドのそれぞれについて、コマンドと、コマンドに関するコメント情報と、を対応付けて記憶する。コメント情報とは、コマンドの説明のための文字列であり、コンピュータに指示できない文字列である。コマンドリスト３１２は、図１に示したコマンドリスト１０２のより詳細な例である。コマンドリスト３１２は、図５に一例を示す。
【００３６】
テンプレートファイル３１３は、生成されるシェルスクリプトのテンプレートである。テンプレートファイル３１３は、図６に一例を示す。コマンドマニュアル情報は、コマンドごとに、コマンドに付加可能なオプションを示す。生成装置１００は、コマンドマニュアル情報を用いて、コマンドに対応付けられた引数を、オプションと、オプション以外の引数とに区別させることができる。
【００３７】
図４は、コマンド実行ログ例を示す説明図である。コマンド実行ログ３１１は、所定の作業を行うために実行されたコマンドのログである。コマンド実行ログ３１１は、例えば、生成装置１００が実行したコマンドのログであってもよいし、他の装置が実行したコマンドのログであってもよい。
【００３８】
コマンド実行ログ３１１には、実行されたコマンドごとに、コマンドの実行開始時刻を示す文字列およびコマンドを含む行と、コマンドの実行終了時刻を示す文字列およびコマンドを含む行と、が含まれる。ここで、日時や時刻を示す文字列をタイムスタンプと称する。コマンドの実行開始時刻を示す文字列は、開始タイムスタンプと称する。コマンドの実行終了時刻を示す文字列は、終了タイムスタンプと称する。ここで、タイムスタンプの後ろに、「ＳＴＡＲＴ」が付加されていれば、タイムスタンプは、開始タイムスタンプである。また、タイムスタンプの後ろに、「ＥＮＤ」が付加されていれば、タイムスタンプは、終了タイムスタンプである。
【００３９】
コマンド実行ログ３１１は、コマンドの実行順に実行履歴が並べられてある。図４の例では、コマンド実行ログ３１１は２２行ある。コマンド実行ログ３１１の奇数行には、開始タイムスタンプおよびコマンドを含む行が含まれる。コマンド実行ログ３１１の偶数行には、終了タイムスタンプおよびコマンドを含む行が含まれる。
【００４０】
図５は、コマンドリスト例を示す説明図である。コマンドリスト３１２は、各コマンドと、各コマンドに関するコメント情報とを対応付けて記憶する。コマンドリスト３１２には、コマンド、シェル用コメント情報、オプション用コメント情報のフィールドを有する。コマンドリスト３１２は、各フィールドに情報が設定されることにより、レコード（例えば、５００−１〜５００−６）などが記憶される。
【００４１】
コマンドのフィールドには、サーバで使用可能なコマンドが設定される。シェル用コメント情報のフィールドには、生成されるシェルスクリプトにおいて、コマンドに対応付けられるコマンドに関するコメント情報が設定される。シェル用コメント情報は、生成されるシェルスクリプトにおいてコマンドに対応付けられるコメント情報である。オプション用コメント情報のフィールドには、生成されるオプション情報において、コマンド実行ログ３１１内でコマンドに付加された引数に対応付けられるコメント情報である。
【００４２】
レコード５００−２には、コマンドとして「ｃｒｅａｔｅ−ｃｌｕｓｔｅｒ」が設定され、シェル用コメント情報として「クラスタの作成」が設定され、オプション用コメント情報として「クラスタを作成」が設定される。
【００４３】
図６は、テンプレートファイル例を示す説明図である。テンプレートファイル３１３は、シェルスクリプトを作成する上で雛形となるデータである。
【００４４】
テンプレートファイル３１３の２行目には、生成されるオプション情報を呼び出すための命令文が含まれる。２行目の「ｏｐｔｉｏｎｉｎｆｏ」は後述するオプション情報のファイル名である。オプション情報のファイル名を予め決めておくことにより、テンプレートファイル３１３からシェルスクリプトを生成する際の変更が少なくなる。これにより、オプション情報と生成されるシェルスクリプトを関連付けることができる。
【００４５】
テンプレートファイル３１３の３行目には、コマンド全体の実行に要する時間を出力し、コマンドの実行の要否を確認するための出力文が含まれる。
【００４６】
テンプレートファイル３１３の４行目には、実行の要否の入力を受け付ける受付文が含まれる。ここでは、「ｙ」を受け付けると、コマンドが実行され、「ｎ」を受け付けると、コマンドが実行されない。テンプレートファイル３１３の５行目には、受け付けた情報が何であるかを判別する判定文が含まれる。
【００４７】
テンプレートファイル３１３の６行目には、「ｙ」が入力された場合における分岐文が含まれる。テンプレートファイル３１３の７行目には、実行が完了したことを出力する出力文が含まれる。ここで、テンプレートファイル３１３の６行目と７行目の間に、コマンドが追加される。
【００４８】
また、テンプレートファイル３１３の９行目には、「ｎ」が入力された場合における分岐文が含まれる。テンプレートファイル３１３の１０行目には、実行がキャンセルされたことを出力する出力文が含まれる。
【００４９】
なお、１行目や１２行目から１６行目には、例外に関する文や形式的な文が含まれるため、詳細な説明を省略する。
【００５０】
図３の説明に戻って、取得部３０１は、コマンド実行ログ３１１を取得する。コマンド実行ログ３１１を取得する処理としては、例えば、取得部３０１は、記憶部３１０に記憶されたコマンド実行ログ３１１を取得する。また、取得部３０１は、例えば、Ｉ／Ｆ２０６を用いてネットワーク２０７を介してコマンド実行ログ３１１を取得してもよい。
【００５１】
つぎに、抽出部３０２は、コマンドリスト３１２を参照して、取得部３０１によって取得されたコマンド実行ログ３１１から、実行履歴におけるコマンドと引数とを特定する。また、コマンド実行ログ３１１に連続して実行された複数のコマンドが含まれる場合、抽出部３０２は、コマンドリスト３１２を参照して、複数のコマンドのそれぞれのコマンドについて、コマンドとコマンドに対応付けて入力された引数とを特定する。ここで、コマンドと引数とを特定する具体的な方法としては、２つの方法が挙げられる。
【００５２】
１つ目の特定方法としては、抽出部３０２は、例えば、コマンドリスト３１２を参照して、取得部３０１によって取得されたコマンド実行ログ３１１から、コマンドを特定することにより、コマンドとコマンドに対応付けて入力された引数と、を特定する。より具体的には、抽出部３０２は、例えば、コマンド実行ログ３１１に含まれる先頭の行から終端の行までを順に読み込む。そして、抽出部３０２は、読み込んだ各行について、コマンドリスト３１２に記憶されたコマンドを特定する。そして、抽出部３０２は、各行について、特定したコマンドの直前に記述された「ａｓａｄｍｉｎ」と、コマンドと、コマンドより後に記述された内容と、を含む部分を実行部分として抽出する。そして、抽出部３０２は、抽出した実行部分のうち、コマンド以降に記述された内容をコマンドに対応付けて入力された引数として特定する。
【００５３】
２つ目の特定方法としては、抽出部３０２は、例えば、コマンド実行ログ３１１に含まれる各行について、予め決められた部分以外の部分を実行部分として抽出する。図４において、予め決められた部分とは、例えば、始タイムスタンプまたは終了タイムスタンプを含み、「ＳＴＡＲＴ」または「ＥＮＤ（  ）」よりも前の部分である。開これにより、抽出部３０２は、コマンド実行ログ３１１から、予め決められた部分を削除した残りの部分を実行部分として抽出する。抽出部３０２は、コマンドリスト３１２を参照して、抽出した実行部分から、コマンドを特定する。そして、抽出部３０２は、抽出した実行部分のうち特定したコマンド以降に記述された内容を引数として特定する。
【００５４】
また、図４に示すように、コマンドは、開始タイムスタンプと、終了タイムスタンプとが対応付けられているため、コマンド実行ログ３１１では、連続する２つの行において同一のコマンドが含まれる。そこで、抽出部３０２は、開始タイムスタンプを含む行については実行部分を抽出し、終了タイムスタンプを含む行については実行部分を抽出しないようにしてもよい。または、抽出部３０２は、終了タイムスタンプを含む行については実行部分を抽出し、開始タイムスタンプを含む行については実行部分を抽出しないようにしてもよい。また、開始タイムスタンプを含む行および終了タイムスタンプを含む行のそれぞれについて実行部分を抽出して実行部分ファイルに追加した後に、同一の２つの実行部分のうち一方の実行部分を削除してもよい。
【００５５】
図７は、実行部分の抽出例を示す説明図である。図７における点線枠の部分が、上述した予め決められた部分である。実行部分７００は、コマンド実行ログ３１１の複数の行の順に、複数の行の各々の行について抽出されたコマンドと引数とを含む実行部分が並べられた情報である。抽出部３０２によって抽出された実行部分７００は、例えば、記憶部３１０などに記憶される。
【００５６】
また、算出部３０５は、コマンド実行ログ３１１に含まれる複数のコマンドのそれぞれのコマンドについて、開始タイムスタンプおよび終了タイムスタンプに基づいて、コマンドの実行に要した処理時間を算出する。
【００５７】
また、算出部３０５は、複数のコマンドのそれぞれのコマンドについて算出した処理時間の合計値を、シェルスクリプトに含まれる複数のコマンドの実行に要する合計処理時間として算出する。
【００５８】
つぎに、図３に示す第１生成部３０３は、特定したコマンドと、特定した引数を置き換えた変数とを含む実行部分に基づいて、変数に設定される値を引数として特定したコマンドを実行可能なプログラムを生成する。プログラムは上述したようにシェルスクリプトである。第１生成部３０３によって生成されたシェルスクリプトは、例えば、記憶部３１０などに記憶される。
【００５９】
また、コマンド実行ログ３１１に連続して実行された複数のコマンドが含まれる場合における第１生成部３０３によるシェルスクリプトの生成処理について説明する。第１生成部３０３は、特定したコマンドと特定した引数を置き換えた変数とを含む実行部分を、複数のコマンドの実行順に従って特定したコマンドを実行可能なシェルスクリプトを生成する。
【００６０】
ここで、複数のコマンドの実行順の特定方法は、例えば、２つの方法がある。まず、１つ目の方法を説明する。上述したようにコマンド実行ログ３１１がコマンドの実行順に先頭から並んでいる。第１生成部３０３は、コマンドの実行順を、コマンド実行ログ３１１における先頭行からのコマンドの並び順に基づいて特定することができる。つぎに、２つ目の方法を説明する。コマンド実行ログ３１１は、各コマンドについてコマンドに対応付けられてコマンドの実行開始時刻を示す文字列および実行終了時刻を示す文字列が含まれる。このため、第１生成部３０３は、コマンドの実行順を、コマンド実行ログ３１１内の各コマンドに対応付けられた実行開始時刻を示す情報または実行終了時刻を示す情報に基づいて特定することができる。
【００６１】
上述した抽出部３０２は、コマンド実行ログ３１１の先頭行からコマンドの実行順に実行部分を抽出している。このため、実行部分７００には、コマンドの実行順に先頭から複数のコマンドが並んでいる。このため、第１生成部３０３は、実行部分７００におけるコマンドの並びをそのまま利用してシェルスクリプトを生成すればよい。
【００６２】
具体的には、第１生成部３０３は、例えば、テンプレートファイル３１３に、抽出部３０２によって抽出された実行部分７００が追加されたシェルスクリプトを生成する。より具体的には、第１生成部３０３は、図６におけるテンプレートファイル３１３の６行目と７行目の間に、実行部分７００を追加することによりシェルスクリプトを生成する。そして、第１生成部３０３は、シェルスクリプト内の実行部分７００に含まれる引数を変数に置換する。変数は、例えば、「＄変数名」によって表される。ここでは、引数をすべて大文字にすることによって変数とする。第１生成部３０３は、実行部分７００において、先頭から２番目のコマンドに対応付けられた引数「ＩＪＳｅｒｖｅｒ００５」を変数「＄ＩＪＳＥＲＶＥＲ００５」に置き換える。なお、第１生成部３０３が、テンプレートファイル３１３に実行部分７００を追加した後に引数を変数に置き換える例を説明したが、これに限らず、実行部分７００に含まれる引数を変数に置き換えた実行部分をテンプレートファイル３１３に追加してもよい。
【００６３】
また、第１生成部３０３は、特定した引数のうちの同一値の引数を同一の変数に置き換えたシェルスクリプトを生成する。引数が同一値であるとは、引数として同じ文字列が設定されていることを示す。例えば、実行部分７００において、先頭から２番目のコマンドに対応付けられた引数「ＩＪＳｅｒｖｅｒ００５」は、先頭から４番目に対応付けられた２つ目の引数と、先頭から５番目に対応付けられた引数と、同じである。このため、第１生成部３０３は、実行部分７００に含まれる各実行部分のうちの引数「ＩＪＳｅｒｖｅｒ００５」を同じ変数「＄ＩＪＳＥＲＶＥＲ００５」に置き換える。これにより、管理者は、同じ引数を一括で設定することができるため、シェルスクリプトを簡単に実行させることができる。
【００６４】
また、第１生成部３０３は、コマンドマニュアル情報３１４に基づいて、抽出部３０２によって特定された引数のうち、オプション以外の引数を特定する。そして、第１生成部３０３は、オプション以外の引数を変数に置き換える。第１生成部３０３は、オプションについては変数に置換しなくてよい。
【００６５】
また、第１生成部３０３は、シェルスクリプトに追加した複数のコマンドのそれぞれについて、コマンドリスト３１２から、コマンドに対応付けられたシェル用コメント情報を取得する。そして、第１生成部３０３は、シェルスクリプトに追加したコマンドに取得したシェル用コメント情報を関連付ける。
【００６６】
また、第１生成部３０３は、シェルスクリプトに追加した複数のコマンドのそれぞれについて、算出部３０５によって算出された処理時間を関連付けて出力する。具体的には、第１生成部３０３は、例えば、シェルスクリプトに追加したコマンドに関するコメント情報として、算出部３０５によって算出された処理時間を示す文字列をシェルスクリプトに追加する。
【００６７】
また、第１生成部３０３は、シェルスクリプトに、算出部３０５によって算出された合計処理時間を関連付けて出力する。具体的には、第１生成部３０３は、例えば、シェルスクリプトに、算出部３０５によって算出された合計処理時間を出力する出力文を追加する。また、第１生成部３０３は、例えば、シェルスクリプトに、コメント情報として、算出部３０５によって算出された合計処理時間を示す文字列を追加する。
【００６８】
図８は、シェルスクリプト例を示す説明図である。シェルスクリプト８００は、例えば、図６に示すテンプレートファイル３１３に実行部分７００が追加され、実行部分７００に含まれる引数が変数に置き換えられたプログラムである。シェルスクリプト８００の３行目に示す出力文内の「シェルの所要時間は約  秒」に算出された合計処理時間を示す文字列が追加される。図８の例では、シェルスクリプト８００が実行されると、「シェルの所要時間は約１１２秒です。」と出力される。また、コマンドごとに算出された処理時間を示す文字列は、コマンドを実行した装置の性能や実行状況などに応じて異なるため、参考値としてシェルスクリプト８００内に追加される。これにより、管理者は、作業時間の目安を付けることができる。
【００６９】
また、シェルスクリプト８００では、７行目から２８行目に実行部分７００が追加される。ここで、シェルスクリプト８００において、「＃」以降の文字列は、コメント情報である。また、（７＋ｉ）行目のコメント情報は、（８＋ｉ）行目のコマンドについて取得されたシェル用コメント情報および算出された処理時間を示す文字列を含む。ｉは、０以上の整数である。シェルスクリプト８００によれば、１９行目のコメント情報により、２０行目に含まれる「ａｓａｄｍｉｎ  ｃｒｅａｔｅ−ｃｌｕｓｔｅｒ  ＄ＩＪＳＥＲＶＥＲ００７」がインスタンスの作成に関するコマンドであり、処理時間が約１３秒であることが分かる。このように、管理者は、各コマンドによりどのような処理が実行されるかを把握することができ、各コマンドの作業時間の目安を付けることができる。
【００７０】
また、シェルスクリプト８００の１２行目、１４行目、２２行目、２４行目などに示すように、コマンドに付加された「−−ｔａｒｇｅｔ」は、オプションであるため、変数に置き換えられていない。
【００７１】
また、図３の説明に戻って、第２生成部３０４は、例えば、変数と、特定された引数と、を対応付けた対応情報を生成する。ここで、対応情報については、オプション情報とも称する。オプション情報のファイル名は、上述したように「оｐｔｉоｎｉｎｆо」とする。このように、引数と変数とを対応付けてリスト化することにより、変数の元となる引数が分かり易くなり、管理者は、変数に新たな引数を設定しやすくなる。上述したように、コマンドリスト３１２は、コマンドと、コマンドに関するコメント情報と、を対応付けて記憶してある。ここでのコマンドに関するコメント情報は、上述したオプション用コメント情報である。第２生成部３０４は、コマンドリスト３１２を参照して、変数と、特定された引数と、特定された引数に対応するコマンドに対応付けられたコメント情報と、を対応付けたオプション情報を生成する。これにより、変数の元となる引数が、いずれのコマンドに対応付けて入力された引数であるかが分かり易くなり、管理者は、変数に新たな引数を設定しやすくなる。
【００７２】
また、コマンド実行ログ３１１に連続して実行された複数のコマンドが含まれる場合における第２生成部３０４によるオプション情報の生成処理について説明する。第２生成部３０４は、コマンドリスト３１２を参照して、複数のコマンドのそれぞれのコマンドについて特定した引数と変数との組み合わせを引数に対応するコマンドの実行順に従って並べたオプション情報を生成する。すなわち、生成されるオプション情報では、コマンド実行ログ３１１における先頭行からの引数の出現順に引数と変数との組み合わせが並べられる。複数のコマンドの実行順の特定方法は、例えば、上述した２つの方法であり、詳細な説明を省略する。
【００７３】
また、第１生成部３０３において同一値の引数が同一の変数に置き換えられた場合における第２生成部３０４によるオプション情報の生成処理について説明する。第２生成部３０４は、例えば、コマンドリスト３１２を参照して、変数と引数との組み合わせについて、引数に対応するコマンドに対応付けられたコメント情報を、複数のコマンドの実行順に従って並べたコメント情報群を対応付けたオプション情報を生成する。すなわち、生成されるオプション情報では、変数と引数との組み合わせについて、コマンド実行ログ３１１における先頭行からのコマンドの出現順にコマンドに対応付けられたコメント情報を、複数のコマンドの実行順に並べられる。
【００７４】
図９は、オプション情報例を示す説明図である。オプション情報９００は、変数と、引数と、引数を含む実行部分におけるコマンドに対応付けられたコメント情報と、を対応付けて記憶する。また、変数は、コマンド実行ログ３１１における引数の出現順に並べられてある。コマンド実行ログ３１１はコマンドの実行順に並んでいるため、引数の出現順とは、引数を対応付けられたコマンドの実行順である。
【００７５】
オプション情報９００において、「＃」以降の文字列は、コメント情報である。例えば、変数「＄ＩＪＳＥＲＶＥＲ００５」は、引数「ＩＪＳｅｒｖｅｒ００５」を置き換えた変数である。そして、引数「ＩＪＳｅｒｖｅｒ００５」は、コマンド実行ログ３１１において、「クラスタを作成」、「インスタンスを作成」、「アプリケーションを配備」、「クラスタを起動」のそれぞれに対応するコマンドに対応付けられてある。上述したように、各変数において、コメント情報は、上述したように、コマンドの実行順に並べられてある。
【００７６】
上述したように、図８に示すシェルスクリプト８００の２行目には、ｓоｕｒｃｅコマンドと、オプション情報９００のファイル名と、が含まれる。これにより、管理対象のサーバが、シェルスクリプト８００を実行すると、オプション情報９００が呼び出される。このように、オプション情報９００とシェルスクリプト８００とは関連付けられてある。
【００７７】
したがって、管理者は、オプション情報９００内の引数を書き換えることによりまとめて変数に引数を設定することができる。
【００７８】
（生成装置１００による生成処理手順例）
図１０および図１１は、生成装置による生成処理手順例を示すフローチャートである。取得部３０１は、記憶部３１０にコマンドリスト３１２が存在するか否かを判断する（ステップＳ１００１）。取得部３０１は、コマンドリスト３１２が存在すると判断した場合（ステップＳ１００１：Ｙｅｓ）、コマンドリスト３１２を記憶部３１０から取得する。
【００７９】
一方、取得部３０１は、記憶部３１０にコマンドリスト３１２が存在しないと判断した場合（ステップＳ１００１：Ｎｏ）、コマンドリスト３１２を取得する（ステップＳ１００２）。ステップＳ１００２において、取得部３０１は、ネットワーク２０７を介して他の装置からコマンドリスト３１２を取得してもよいし、入力装置（図示省略）に対する管理者の操作入力などによってコマンドリスト３１２を取得してもよい。
【００８０】
また、抽出部３０２は、コマンド実行ログ３１１から、コマンドリスト３１２に基づいて、コマンドと引数とを含む実行部分を抽出する（ステップＳ１００３）。ステップＳ１００３において、抽出部３０２は、コマンド実行ログ３１１から、コマンドリスト３１２に基づいて、コマンドと引数とを特定することにより、実行部分を抽出する例を挙げている。このため、抽出された実行部分においてコマンドと引数とは特定されてある。上述したように、ステップＳ１００３に記載の処理に代わって、抽出部３０２は、コマンド実行ログ３１１から実行部分を抽出した後に、抽出した実行部分からコマンドリスト３１２に基づいてコマンドと引数を特定する処理を行ってもよい。
【００８１】
つぎに、第１生成部３０３は、テンプレートファイル３１３に、抽出した実行部分を追加したシェルスクリプトを生成する（ステップＳ１００４）。そして、第１生成部３０３は、コマンドリスト３１２から、抽出した実行部分に含まれるコマンドに対応付けられた各コメント情報を取得する（ステップＳ１００５）。ステップＳ１００５において取得されるコメント情報は、コマンドリスト３１２に含まれるスクリプト用コメント情報およびオプション用コメント情報である。
【００８２】
つぎに、第１生成部３０３は、シェルスクリプト８００に、複数のコマンドのそれぞれのコマンドについて取得したスクリプト用コメント情報を追加する（ステップＳ１００６）。ステップＳ１００６において、第１生成部３０３は、図８に示すように、シェルスクリプト８００に含まれる複数のコマンドのそれぞれに対応付けて取得したスクリプト用コメント情報を追加する。
【００８３】
つぎに、算出部３０５は、コマンド実行ログ３１１に基づいて、実行された複数のコマンドのそれぞれのコマンドの処理時間を算出する（ステップＳ１１０１）。つづいて、算出部３０５は、それぞれのコマンドについて算出した処理時間を合計することにより合計処理時間を算出する（ステップＳ１１０２）。そして、第１生成部３０３は、実行されたコマンドごとに算出した処理時間を示す文字列をシェルスクリプト８００に追加する（ステップＳ１１０３）。ステップＳ１１０３において、第１生成部３０３は、シェルスクリプト８００内のコマンドごとに算出した処理時間を対応付けて出力する。
【００８４】
つぎに、第１生成部３０３は、シェルスクリプト８００に、合計処理時間を追加する（ステップＳ１１０４）。ステップＳ１１０４において、合計処理時間を追加する処理としては、第１生成部３０３は、例えば、合計処理時間を出力する出力文をシェルスクリプト８００に追加する。テンプレートファイル３１３には、合計処理時間を出力するための出力文が記述されているため、ステップＳ１１０４において、合計処理時間を追加する処理としては、第１生成部３０３は、算出した合計処理時間を示す文字列を出力文に追加する。
【００８５】
つづいて、第１生成部３０３は、コマンドマニュアル情報３１４に基づいて、シェルスクリプト８００において引数を変数に置換する（ステップＳ１１０５）。ステップＳ１１０５において、第１生成部３０３は、コマンドマニュアル情報３１４に基づいて、特定された各引数のうちオプション以外の引数を特定する。そして、ステップＳ１１０５において、第１生成部３０３は、オプション以外の引数を、「＄」と引数を大文字にした文字列との組み合わせの文字列に置換する。「＄文字列（変数名）」によって変数が表される。引数を大文字にした文字列を変数とすることにより、シェルスクリプト８００に含まれる各引数のうちの同一値の引数を同一の変数に置き換えることができる。ここで、引数に数値が含まれる場合、数値を文字列として変数とする。
【００８６】
つぎに、第２生成部３０４は、コマンドの実行順に、変数と、引数と、コマンドに対応付けられたオプション用コメント情報とを対応付けたオプション情報９００を生成する（ステップＳ１１０６）。そして、第２生成部３０４は、オプション情報９００において、オプション用コメント情報をコマンドの実行順に並べ（ステップＳ１１０７）、一連の処理を終了する。なお、第２生成部３０４は、ステップＳ１１０６とステップＳ１１０７とを同時に行ってもよい。
【００８７】
以上説明したように、生成装置１００は、コマンドリストを参照してコマンド実行ログ内の実行履歴におけるコマンドと引数とを特定し、コマンドと引数を置換した変数とに基づきシェルスクリプトを生成する。これにより、管理者は、シェルスクリプトの作成の手間を省くことができる。また、管理者は、シェルスクリプト内の変数に引数の値を与えて管理対象のサーバにシェルスクリプトを実行させるだけで、過去に行った作業を簡単に繰り返し行うことができる。したがって、生成装置１００は、管理者がコマンドを何度も入力する手間を省くことができる。
【００８８】
また、生成装置１００は、引数と変数とを対応付けてリスト化する。これにより、変数の元となる引数が分かり易いため、管理者は、変数に新たな引数を設定しやすくなる。
【００８９】
また、生成装置１００は、コマンドにコメント情報を対応付けられたコマンドリストを参照して、変数と、引数と、引数に対応するコマンドに対応付けられたコメント情報と、を対応付けてリスト化する。これにより、変数が、シェルスクリプトにおいていずれのコマンドに対応付けられているかが分かり易くなり、管理者は、変数に新たな引数を設定しやすくなる。
【００９０】
また、生成装置１００は、コマンドの実行開始時刻を示す文字列および実行終了時刻を示す文字列を含むコマンド実行ログを参照して算出したコマンドの処理時間をコマンドおよび変数に関連付けて出力する。これにより、管理者は、新たにコマンドをサーバに実行させる際のコマンドの処理時間の目安を付けることができる。
【００９１】
また、生成装置１００は、連続して実行された複数のコマンドの各々について特定したコマンドと特定した引数を置き換えた変数とに基づいて、複数のコマンドの実行順に従って特定したコマンドを実行可能なシェルスクリプトを生成する。これにより、シェルスクリプトの作成の手間を省くことができる。また、コマンド群を何度も入力する手間を省くことができ、作業を容易に繰り返すことができる。
【００９２】
また、生成装置１００は、コマンドリストを参照して、複数のコマンドのそれぞれのコマンドについて、特定した引数と、変数と、対応付けてリスト化する。これにより、管理者は、リスト化されたファイルにより変数に引数を一括して設定することができるため、シェルスクリプトを実行し易くなる。
【００９３】
また、生成装置１００は、引数に対応するコマンドの実行順に引数と変数とを対応付けてリスト化する。これにより、管理者は、一連のコマンドによる作業内容を理解し易くなる。
【００９４】
また、生成装置１００は、コマンドに関するコメント情報が対応付けられたコマンドリストを参照して、変数と、特定した引数と、特定した引数に対応するコマンドに対応付けられたコメント情報と、を対応付けてリスト化する。これにより、変数がいずれのコマンドに対応付けられているかが分かり易くなり、管理者は、変数に新たな引数を設定しやすくなる。
【００９５】
また、生成装置１００は、同一値の引数を同じ変数に置き換え、変数と特定した引数との組み合わせに、特定した引数に対応するコマンドに対応付けられたコメント情報を、複数のコマンドの実行順に並べたコメント情報群を対応付けてリスト化する。これにより、同一値の引数を一括して変更することができるため、管理者による引数の設定の手間を省くことができる。また、コメント情報をコマンドの実行順に並べることにより、管理者は、シェルスクリプトおよび変数と引数とのリストを参照した際に、一連のコマンドによる作業内容が理解し易くなる。
【００９６】
また、生成装置１００は、複数のコマンドのそれぞれのコマンドの実行開始時刻を示す文字列および実行終了時刻を示す文字列を含むコマンド実行ログを参照して、それぞれのコマンドの処理時間を合計することにより複数のコマンドの処理時間を算出する。これにより、管理者は、シェルスクリプトの処理時間の目安を付けることができる。
【００９７】
また、生成装置１００は、特定した引数のうち、オプション以外の引数を変数に置き換える。これにより、シェルスクリプトの実行時に変更する引数が変数に置き換わり、変更しなくてもよい引数が変数に置き換わらないため、管理者は、変数に新たな引数を設定しやすくなる。
【００９８】
なお、本実施の形態で説明した生成方法は、予め用意された生成プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本生成プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、生成プログラムは、インターネット等のネットワークを介して配布してもよい。
【００９９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１００】
（付記１）コンピュータに、
コマンドと前記コマンドに対応付けられた引数とを含む実行履歴を記憶したコマンド実行ログを取得し、
コマンドが記憶されたコマンドリストを参照して、取得した前記コマンド実行ログから、前記実行履歴における前記コマンドと前記引数とを特定し、
特定した前記コマンドと、特定した前記引数を置き換えた変数とに基づいて、前記変数に設定される値を引数として前記コマンドを実行可能なプログラムを生成する、
処理を実行させることを特徴とする生成プログラム。
【０１０１】
（付記２）前記コンピュータに、
前記変数と、特定した前記引数と、を対応付けた対応情報を生成する、
処理を実行させることを特徴とする付記１に記載の生成プログラム。
【０１０２】
（付記３）前記コマンドリストは、前記コマンドと、前記コマンドに関するコメント情報と、を対応付けて記憶し、
前記対応情報を生成する処理は、
前記コマンドリストを参照して、前記変数と、特定した前記引数と、特定した前記引数に対応する前記コマンドに対応付けられた前記コメント情報と、を対応付けた前記対応情報を生成する、
ことを特徴とする付記２に記載の生成プログラム。
【０１０３】
（付記４）前記コマンド実行ログは、前記コマンドの実行開始時刻を示す文字列および実行終了時刻を示す文字列を含み、
前記コンピュータに、
前記コマンド実行ログを参照して、特定した前記コマンドの実行に要した時間を算出し、
算出した前記時間を、特定した前記コマンドと前記変数とに関連付けて出力する、
処理を実行させることを特徴とする付記１〜３のいずれか一つに記載の生成プログラム。
【０１０４】
（付記５）前記コマンド実行ログは、連続して実行された複数のコマンドを含み、
前記コマンドリストは、前記複数のコマンドが記憶され、
前記コマンドと前記引数とを特定する処理は、
前記コマンドリストを参照して、前記コマンド実行ログから、前記複数のコマンドのそれぞれのコマンドについて、前記コマンドと前記コマンドに対応付けて入力された引数とを特定し、
前記プログラムを生成する処理は、
前記複数のコマンドのそれぞれのコマンドについて、特定した前記コマンドと、特定した前記引数を置き換えた前記変数とを含む実行部分に基づいて、前記複数のコマンドの実行順に従って前記コマンドを実行可能なプログラムを生成する、
ことを特徴とする付記１に記載の生成プログラム。
【０１０５】
（付記６）前記コンピュータに、
前記コマンドリストを参照して、前記複数のコマンドのそれぞれのコマンドについて、特定した前記引数と、前記変数と、を対応付けた対応情報を生成する、
処理を実行させることを特徴とする付記５に記載の生成プログラム。
【０１０６】
（付記７）前記対応情報を生成する処理は、
前記コマンドリストを参照して、特定した前記引数と、前記変数と、の組み合わせを、特定した前記引数に対応する前記コマンドの実行順に従って並べた前記対応情報を生成する、
ことを特徴とする付記６に記載の生成プログラム。
【０１０７】
（付記８）前記コマンドリストは、前記複数のコマンドのそれぞれのコマンドについて、前記コマンドと、前記コマンドに関するコメント情報と、を対応付けて記憶し、
前記対応情報を生成する処理は、
前記コマンドリストを参照して、前記複数のコマンドのそれぞれのコマンドについて、前記変数と、特定した前記引数と、特定した前記引数に対応する前記コマンドに対応付けられた前記コメント情報と、を対応付けた前記対応情報を生成する、
ことを特徴とする付記６に記載の生成プログラム。
【０１０８】
（付記９）前記プログラムを生成する処理は、
前記複数のコマンドの実行順に従って、コマンドと、特定した前記引数のうちの同一値の引数を同一の変数に置き換えた前記コマンドに対応付けられた引数とを並べた前記プログラムを生成し、
前記対応情報を生成する処理は、
前記コマンドリストを参照して、前記変数と特定した前記引数との組み合わせに、特定した前記引数に対応する前記コマンドに対応付けられた前記コメント情報を、前記複数のコマンドの実行順に並べたコメント情報群を対応付けた前記対応情報を生成する、
ことを特徴とする付記８に記載の生成プログラム。
【０１０９】
（付記１０）前記コマンド実行ログは、前記複数のコマンドのそれぞれのコマンドの実行開始時刻を示す文字列および実行終了時刻を示す文字列を含み、
前記コンピュータに、
前記コマンド実行ログを参照して、前記複数のコマンドのそれぞれのコマンドについて、特定した前記コマンドの前記実行開始時刻を示す文字列および前記実行終了時刻を示す文字列に基づいて、特定した前記コマンドの実行に要した時間を算出し、
特定した前記コマンドについて算出した前記時間の合計値を算出し、
算出した前記合計値を前記プログラムに関連付けて出力する、
処理を実行させることを特徴とする付記５〜９のいずれか一つに記載の生成プログラム。
【０１１０】
（付記１１）コンピュータが、
コマンドと前記コマンドに対応付けられた引数とを含む実行履歴を記憶したコマンド実行ログを取得し、
コマンドが記憶されたコマンドリストを参照して、取得した前記コマンド実行ログから、前記実行履歴における前記コマンドと前記引数とを特定し、
特定した前記コマンドと、特定した前記引数を置き換えた変数とに基づいて、前記変数に設定される値を引数として前記コマンドを実行可能なプログラムを生成する、
処理を実行することを特徴とする生成方法。
【０１１１】
（付記１２）コマンドと前記コマンドに対応付けられた引数とを含む実行履歴を記憶したコマンド実行ログを取得し、
コマンドが記憶されたコマンドリストを参照して、取得した前記コマンド実行ログから、前記実行履歴における前記コマンドと前記引数とを特定し、
特定した前記コマンドと、特定した前記引数を置き換えた変数とに基づいて、前記変数に設定される値を引数として前記コマンドを実行可能なプログラムを生成する、
処理を実行する制御部を有することを特徴とする生成装置。
【符号の説明】
【０１１２】
１００  生成装置
１０１，３１１  コマンド実行ログ
１０２，３１２  コマンドリスト
１０３，８００  シェルスクリプト
１１１，１１２，７００  実行部分
３０１  取得部
３０２  抽出部
３０３  第１生成部
３０４  第２生成部
３０５  算出部
３１０  記憶部
３１３  テンプレートファイル
３１４  コマンドマニュアル情報
９００  オプション情報
【図１】
2018063496.tif 000003
【図２】
2018063496.tif 000004
【図３】
2018063496.tif 000005
【図４】
2018063496.tif 000006
【図５】
2018063496.tif 000007
【図６】
2018063496.tif 000008
【図７】
2018063496.tif 000009
【図８】
2018063496.tif 000010
【図９】
2018063496.tif 000011
【図１０】
2018063496.tif 000012
【図１１】
2018063496.tif 000013