(57)【要約】【課題】スクリプト間の類否判断の精度を向上させるスクリプト管理技術を提供する。【解決手段】複数のスクリプトに含まれるコマンドから、出現数に基づき、コマンドまたはコマンドと引数との組である複数のメタコマンドを抽出し、複数のスクリプトそれぞれに含まれる複数のメタコマンドの出現数情報と、複数のスクリプトそれぞれの複数のメタコマンドの稀少さとに基づいて、複数のスクリプトのそれぞれに含まれるメタコマンドから特定のメタコマンドを抽出し、複数のスクリプトのそれぞれの相互間で比較し、抽出した特定のメタコマンドの組合せにおいて同一のメタコマンドの組合せが存在する確率を算出し、確率に基づいて、比較したスクリプト同士が類似すると判定することにより、上記課題の解決を図る。【選択図】図１
2015118562.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数のスクリプトに含まれるコマンドから、出現数に基づき、コマンドまたはコマンドと引数との組である複数のメタコマンドを抽出し、
前記複数のスクリプトそれぞれに含まれる前記複数のメタコマンドの出現数情報と、前記複数のスクリプトそれぞれの前記複数のメタコマンドの稀少さとに基づいて、前記複数のスクリプトのそれぞれに含まれる前記メタコマンドから特定のメタコマンドを抽出し、
前記複数のスクリプトのそれぞれの相互間で比較し、抽出した前記特定のメタコマンドの組合せにおいて同一の前記メタコマンドの組合せが存在する確率を算出し、該確率に基づいて、比較したスクリプト同士が類似すると判定する
処理を実行させることを特徴とするスクリプト管理プログラム。
【請求項２】
前記複数のメタコマンドの抽出において、前記複数のスクリプトのそれぞれについて、前記コマンドと前記引数との同一の組が複数組ある場合には、１組の前記コマンドと前記引数を同じメタコマンドとして抽出する
ことを特徴とする請求項１に記載のスクリプト管理プログラム。
【請求項３】
前記複数のメタコマンドの抽出において、前記複数のスクリプトのそれぞれについて、引数が相互に異なる同じコマンドが複数ある場合、該コマンドのそれぞれを、同じメタコマンドとして抽出する
ことを特徴とする請求項１または２に記載のスクリプト管理プログラム。
【請求項４】
前記複数のメタコマンドの抽出において、前記複数のスクリプトのそれぞれについて、引数が相互に異なる同じコマンドが複数ある場合、記憶装置から、該コマンドそれぞれの実行による情報処理装置の動作状況の変更に関する動作状況変更情報を取得し、該コマンドそれぞれについて取得した該動作状況変更情報の内容が異なる場合、該コマンドそれぞれを、相互に異なるメタコマンドとして抽出する
ことを特徴とする請求項１または２に記載のスクリプト管理プログラム。
【請求項５】
前記複数のメタコマンドの抽出において、システム環境に応じて表記方法が相違するコマンド同士を対応付けたコマンド対応情報に基づいて、表記方法の異なるコマンドであって同一の意味を示す該コマンドを、同じメタコマンドとして抽出する
ことを特徴とする請求項１〜４のうちいずれか１項に記載のスクリプト管理プログラム。
【請求項６】
複数のスクリプトに含まれるコマンドから、出現数に基づき、コマンドまたはコマンドと引数との組である複数のメタコマンドを抽出する第１抽出部と、
前記複数のスクリプトそれぞれに含まれる前記複数のメタコマンドの出現数情報と、前記複数のスクリプトそれぞれの前記複数のメタコマンドの稀少さとに基づいて、前記複数のスクリプトのそれぞれに含まれる前記メタコマンドから特定のメタコマンドを抽出する第２抽出部と、
前記複数のスクリプトのそれぞれの相互間で比較し、抽出した前記特定のメタコマンドの組合せにおいて同一の前記メタコマンドの組合せが存在する確率を算出し、該確率に基づいて、比較したスクリプト同士が類似すると判定する判定部と、
を備えることを特徴とするスクリプト管理装置。
【請求項７】
コンピュータが
複数のスクリプトに含まれるコマンドから、出現数に基づき、コマンドまたはコマンドと引数との組である複数のメタコマンドを抽出し、
前記複数のスクリプトそれぞれに含まれる前記複数のメタコマンドの出現数情報と、前記複数のスクリプトそれぞれの前記複数のメタコマンドの稀少さとに基づいて、前記複数のスクリプトのそれぞれに含まれる前記メタコマンドから特定のメタコマンドを抽出し、
前記複数のスクリプトのそれぞれの相互間で比較し、抽出した前記特定のメタコマンドの組合せにおいて同一の前記メタコマンドの組合せが存在する確率を算出し、該確率に基づいて、比較したスクリプト同士が類似すると判定する
処理を実行することを特徴とするスクリプト管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スクリプトの管理技術に関する。
【背景技術】
【０００２】
コンピュータを利用した業務処理の運行を自動化し、オペレータの負担を軽減する運用自動化ツールがある。運用自動化ツールの整備や複数人による運用作業の分担化により、仮想マシン（ＶＭ）等のリソースの管理は、個別のコマンドを取りまとめたスクリプトや、技術的な詳細内容を理解していなくても設定可能なフローにより行われることが増えてきた。ここで、スクリプトとは、コンピュータが理解できる言語への変換作業を省略して、プログラムの記述や実行を比較的簡易に行うことができる言語の総称である。そのようなフローを用いて運用を行うためには、複数のスクリプトを、対象に応じて、適切な順序で、組み合わせる。しかしながら、スクリプトが大量に存在する場合、適切なスクリプトを選択し、組み合わせるためには、スクリプトの内容に応じて、分類や区別がされている必要がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−７５９４０号公報
【特許文献２】特開２００１−１４２７３８号公報
【特許文献３】特開２００６−２６０２８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
スクリプトの内容に応じて、分類や区別をするためにスクリプト間の類似を判断することが考えられる。スクリプトの類似を判断には、スクリプトを構成するコマンドの異同を判別するために、自然言語処理での重要単語抽出手法であるＴＦ（Term Frequency）−ＩＤＦ（Inverse Document Frequency）を利用することが考えられる。
【０００５】
しかしながら、自然言語解析による重要単語の抽出手法では、コマンドの異同の判別は適切には行えず、スクリプトの類似も適切に判断できない。
【０００６】
本発明は、一側面として、スクリプト間の類否判断の精度を向上させるスクリプト管理技術を提供する。
【課題を解決するための手段】
【０００７】
本発明の一側面に係るスクリプト管理プログラムは、コンピュータに、以下の処理を実行させる。コンピュータは、複数のスクリプトに含まれるコマンドから、出現数に基づき、コマンドまたはコマンドと引数との組である複数のメタコマンドを抽出する。コンピュータは、複数のスクリプトそれぞれに含まれる複数のメタコマンドの出現数情報と、複数のスクリプトそれぞれの複数のメタコマンドの稀少さとに基づいて、複数のスクリプトのそれぞれに含まれるメタコマンドから特定のメタコマンドを抽出する。コンピュータは、複数のスクリプトのそれぞれの相互間で比較し、抽出した特定のメタコマンドの組合せにおいて同一のメタコマンドの組合せが存在する確率を算出し、確率に基づいて、比較したスクリプト同士が類似すると判定する。
【発明の効果】
【０００８】
本発明の一側面にかかるスクリプト管理技術によれば、スクリプト間の類否判断の精度を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態におけるスクリプト管理装置を示す。
【図２】本実施形態（実施例１）におけるスクリプト管理装置の一例を示す。
【図３】本実施形態（実施例１）におけるスクリプトＤＢに格納されているスクリプトの一例を示す。
【図４】本実施形態（実施例１）におけるコマンド辞書テーブルの一例を示す。
【図５】本実施形態（実施例１）におけるコマンド対応テーブルの一例を示す。
【図６】本実施形態（実施例１）におけるスクリプト管理処理のフローの一例を示す。
【図７】本実施形態（実施例１）における各スクリプトに存在するメタコマンドの個数の一例を示す。
【図８】本実施形態（実施例１）における各スクリプトのメタコマンドのｔｆ−ｉｄｆ値の一例を示す。
【図９】本実施形態（実施例１）における要約スクリプトの一例を示す。
【図１０】本実施形態（実施例１）における要約スクリプト間の類似度の一例を示す。
【図１１】本実施形態（実施例１）における類似するスクリプトを分類して、ディレクトリに分けて表示した例を示す。
【図１２】本実施形態（実施例２）におけるサーバのコマンドログのステータス変更と、その要因になったコマンドとを関係付ける処理を説明するための図である。
【図１３】本実施形態（実施例２）におけるスクリプト管理装置の一例を示す。
【図１４】本実施形態（実施例２）におけるステータス変更コマンド辞書テーブルの一例を示す。
【図１５】本実施形態（実施例２）におけるステータス変更コマンド辞書テーブル生成処理のフローの一例を示す。
【図１６】本実施形態（実施例２）におけるスクリプト管理処理のフローの一例を示す。
【図１７】本実施形態（実施例２）におけるステータス変更コマンド辞書テーブル３３を用いたコマンド分類処理（Ｓ３２）の詳細フローの一例を示す。
【図１８】本実施形態におけるプログラムを実行するコンピュータのハードウェア環境の構成ブロック図の一例である。
【発明を実施するための形態】
【００１０】
運用自動化ツールでは、運用（リリース管理、変更管理、インシデント管理、監視、障害対処）のための複数のフローを格納するワークフローデータベース、及び複数のスクリプト（例：sh、ruby、perlなど）を格納するスクリプトデータベースがある。以下では、データベースをＤＢと称する。
【００１１】
運用のスクリプトは、従来一か所に集められて管理されていなかったが、運用自動化の流れで一か所に集められるようになり、必要なスクリプトを探し出すことが困難になった。例えば、保存されているスクリプトの規模は数千オーダであり、その中から必要なスクリプトを探すのは労力を要する。
【００１２】
また、クラウドシステムにおいて、対象（各サーバのハードウェアの種別、オペレーティングシステム（ＯＳ）の種別、ハイパーバイザの種別、インストールされているアプリケーションの種類）が異なるごとにスクリプトが存在する。このようにクラウドの複雑化により、スクリプトの組合せパターンが増加している。
【００１３】
そこで、自然言語処理での重要単語抽出手法であるＴＦ（Term Frequency）−ＩＤＦ（Inverse Document Frequency）を利用することが考えられる。
【００１４】
ところが、ＴＦ−ＩＤＦを用いることで、スクリプトのうち重要なコマンドだけを抜き出す作業を行う場合、文章中の重要単語は抜き出せるが、コマンドの分類は、たとえば以下の理由により、適切に行われない場合がある。
【００１５】
例えば、コマンドが構文構成を持っており、特定の部分の引数が異なる場合は、そのコマンドは別のコマンドとして認識される必要があるが、ＴＦ−ＩＤＦではそのような、区別はできない。
【００１６】
また、例えば、ハイパーバイザの違い等による環境の相違が存在する場合に、同じ内容のコマンドであっても、表記が異なる場合が存在する。しかしながら、ＴＦ−ＩＤＦにおける認識と、表記が異なる場合とを、どのように整合させるかは、一様には決められない。
【００１７】
このように、スクリプトの類似を判断するためには、スクリプトを構成するコマンドの異同を判別する。しかしながら、コマンドには構文が存在するため、自然言語解析による重要単語の抽出手法のみでは、コマンドの異同の判別は適切には行えず、結果としてスクリプトの類似も適切に判断できない。
【００１８】
また、スクリプトの内容には環境に応じて変化する部分も存在し、環境に対応してコマンド内容が変化していても、同じコマンドであると認識されなければ、スクリプトの類似について、正しい判断ができない。
【００１９】
そこでは、本実施形態では、スクリプト間の類否判断の精度を向上させたスクリプト管理技術を提供する。
【００２０】
図１は、本実施形態におけるスクリプト管理装置を示す。スクリプト管理装置１は、第１抽出部２、第２抽出部３、判定部４を含む。
【００２１】
第１抽出部２は、複数のスクリプトに含まれるコマンドから、出現数に基づき、コマンドまたはコマンドと引数との組である複数のメタコマンドを抽出する。第１抽出部２の一例としては、分類部１４が挙げられる。ここで、メタコマンドは、コマンド全体の集合に加え、コマンドと引数との組み合わせの集合を含む。
【００２２】
第２抽出部３は、複数のスクリプトそれぞれに含まれる複数のメタコマンドの出現数情報と、複数のスクリプトそれぞれの複数のメタコマンドの稀少さとに基づいて、複数のスクリプトのそれぞれに含まれるメタコマンドから特定のメタコマンドを抽出する。第２抽出部３の一例としては、抽出部１５が挙げられる。
【００２３】
判定部４は、複数のスクリプトのそれぞれの相互間で比較し、抽出した特定のメタコマンドの組合せにおいて同一のメタコマンドの組合せが存在する確率を算出し、確率に基づいて、比較したスクリプト同士が類似すると判定する。判定部４の一例としては、算出部１６、グループ化部１７が挙げられる。
【００２４】
このように構成することにより、スクリプト間の類否判断の精度を向上させることができる。
【００２５】
また、第１抽出部２は、複数のスクリプトのそれぞれについて、コマンドと引数との同一の組が複数組ある場合には、１組のコマンドと引数を同じメタコマンドとして抽出してもよい。
【００２６】
また、第１抽出部２は、複数のスクリプトのそれぞれについて、引数が相互に異なる同じコマンドが複数ある場合、コマンドのそれぞれを、同じメタコマンドとして抽出してもよい。
【００２７】
スクリプト管理装置１は、さらに、動作状況変更情報格納部５を含む。動作状況変更情報格納部５は、コマンドそれぞれの実行による情報処理装置の動作状況の変更に関する動作状況変更情報を格納する。第１抽出部２は、複数のスクリプトのそれぞれについて、引数が相互に異なる同じコマンドが複数ある場合、動作状況変更情報格納部５から、実行した該コマンドそれぞれに対応する動作状況変更情報を取得する。第１抽出部２は、実行したコマンドそれぞれに対応する動作状況変更情報の内容が異なる場合、実行したコマンドそれぞれを、相互に異なるメタコマンドとして抽出してもよい。動作状況変更情報格納部５の一例として、ステータス変更コマンド辞書テーブル３３が挙げられる。
【００２８】
また、スクリプト管理装置は、さらに、コマンド対応情報格納部６を含む。コマンド対応情報格納部６は、システム環境に応じて表記方法が相違するコマンド同士を対応付けたコマンド対応情報を格納する。このとき、第１抽出部２は、コマンド対応情報に基づいて、表記方法の異なるコマンドであって同一の意味を示すコマンドを、同じメタコマンドとして分類してもよい。コマンド対応情報格納部６の一例として、コマンド対応テーブル２２が挙げられる。
【００２９】
本実施形態の実施例について、以下に、詳述する。
（実施例１）
図２は、本実施形態（実施例１）におけるスクリプト管理装置の一例を示す。スクリプト管理装置１１は、制御部１２、記憶部１９を含む。記憶部１９は、スクリプトＤＢ２０、コマンド辞書テーブル２１、コマンド対応テーブル２２、閾値ファイル２３を格納する。スクリプトＤＢ２０は、運用自動化ツールで用いる複数のスクリプトを格納する。コマンド辞書テーブル２１は、コマンドと、そのコマンドで用いる引数を管理する辞書テーブルである。コマンド対応テーブル２２は、システム環境に応じてスクリプトで用いるコマンドの表記が異なってはいるが、同一の意味を示すコマンドを対応付けたテーブルである。閾値ファイル２２には、後述する処理で用いる閾値が格納されている。
【００３０】
制御部１２は、読込部１３、分類部１４、抽出部１５、算出部１６、グループ化部１７、表示制御部１８として機能する。
【００３１】
読込部１３は、スクリプトＤＢ２０から複数のスクリプトを読み込む。
分類部１４は、コマンドまたはコマンドと引数の組の出現頻度に応じて、コマンドを同一のコマンドまたは異なるコマンドと分類する。より具体的には、分類部１４は、コマンド抽出処理１４ａ、コマンド分類処理１４ｂを行う。コマンド抽出処理１４ａでは、分類部１４は、コマンド辞書テーブル２１を参照して、各スクリプトのコマンドを、引数と共に抽出する。コマンド辞書テーブル２１にないコマンドの場合、引数を伴わないコマンドと扱われて、コマンドのみが抽出される。コマンド分類処理１４ｂでは、分類部１４は、コマンドの分類を行う。例えば、読み込んだ複数のスクリプトがシステム環境に応じてコマンドの表記が異なっている場合があるので、分類部１４は、コマンド対応テーブル２２を用いて、同一の意味を示す表記の異なるコマンドを、同一のコマンドとして分類する。また、分類部１４は、各スクリプトにおいて、同一のコマンドが複数ある場合、引数の値の異なるコマンドを異なるコマンドとして分類する。
【００３２】
抽出部１５は、各スクリプトにおいて、分類部１４で分類されたコマンドのうち、重要なコマンドを抽出する。
【００３３】
類似度算出部１６は、対比する２つのスクリプトに含まれる重要なコマンドの全ての組み合わせに対する、同一の重要なコマンド同士の組合せの割合を、その２つのスクリプトの類似度（２４）として算出する。
【００３４】
グループ化部１７は、その類似度が閾値以上のスクリプト同士を類似すると判定し、それらを類似グループ２５としてグループ化する。
【００３５】
表示制御部１８は、ディスプレイにて、同一ディレクトリに、グループ化したスクリプト（類似グループ２５）を表示させるように表示制御を行う。
【００３６】
図３は、本実施形態（実施例１）におけるスクリプトＤＢに格納されているスクリプトの一例を示す。本実施形態では、スクリプトＤＢ２０には、例えば、４つのスクリプト（スクリプトＡ、スクリプトＢ、スクリプトＣ、スクリプトＤ）が格納されているとする。
【００３７】
「date」は、システム日時を表示させるコマンドである。「ls」は、カレントディレクトリのファイルリスト（ディレクトリも含む）を表示するコマンドである。「service」は、サービスの起動や停止、ステータスの確認を実行する。「cd」は、カレントディレクトリを変更するコマンドである。「pwd」は、カレントディレクトリ名を表示するコマンドである。
【００３８】
コマンドに応じて、コマンド実行時に引数を使用しているが、その引数のうち所定の引数（オプション）を指定することができる。引数は実行に使用されるファイル名、ディレクトリ名や出力されるメッセージ等を指定するのに使用される。一方、オプションは、例えば、コマンドの振る舞い方を指定するために使用される。例えば、「service」コマンドの場合、「service httpd start」の“httpd”は引数、“start”はオプションである。
【００３９】
図４は、本実施形態（実施例１）におけるコマンド辞書テーブルの一例を示す。コマンド辞書テーブル２１は、「コマンド」２１−１、「第ｎ引数」２１−２のデータ項目を含む。「コマンド」２１−１には、コマンド名が格納される。「第ｎ引数」２１−２には、そのコマンドで指定される引数が第ｎ個まで指定されることを示す。例えば、コマンド「service」について、「第ｎ引数」２１−２に「１，２」が格納されているが、これは「service」に第１引数と第２引数とが指定されることを示す。
【００４０】
図５は、本実施形態（実施例１）におけるコマンド対応テーブルの一例を示す。コマンド対応テーブル２２は、表記の種類毎に、コマンドが対応付けられて格納されている。「コマンド」２２−１の列には、例えば、仮想化環境で用いるハイパーバイザの種類がＸｅｎの場合に用いるコマンドが格納されている。「コマンド」２２−２の列には、例えば、仮想化環境で用いるハイパーバイザの種類がＫＶＭの場合に用いるコマンドが格納されている。また、Ｘｅｎの場合に用いるコマンド「xm list」とＫＶＭの場合に用いるコマンド「virsh list」とは表記は異なるが、同じ意味を表すため、対応付けられて格納されている。
【００４１】
図６は、本実施形態（実施例１）におけるスクリプト管理処理のフローの一例を示す。以下では、図７−図１１を参照しながら、図６のフローを説明する。
【００４２】
読込部１３は、スクリプトＤＢ２０から複数のスクリプト（例えば、スクリプトＡ〜Ｄ）を読み出す（Ｓ１）。
【００４３】
次に、分類部１４は、コマンド辞書テーブル２１を参照して、スクリプト内のコマンドと、そのコマンドの引数の組を抽出する。例えば、「service」コマンドの場合、コマンド辞書テーブル２１に基づけば、第１引数、第２引数を有するから、分類部１４は、「service httpd start」を抽出する（Ｓ２）。なお、分類部１４は、スクリプト内のコマンドのうち、コマンド辞書テーブル２１に存在しないコマンドについては、そのコマンド単体を抽出する。
【００４４】
次に、読み込んだ複数のスクリプトがシステム環境に応じてコマンドの表記が異なっている場合があるので、分類部１４は、コマンド対応テーブル２２を用いて、同一の意味を示す表記の異なるコマンドを、同一のコマンドとして分類する（Ｓ３）。例えば、分類部１４は、コマンド対応テーブル２２を用いて、同一の意味を示す表記の異なるコマンドを、いずれかの種類の表記に変換して、その表記を統一する。例えば、「virsh list」コマンドを「virsh list」コマンドへ変換する。
【００４５】
次に、分類部１４は、同じコマンドで、かつ同じ引数を設定するコマンドが複数ある場合には、その同じ引数を設定するコマンドを独立した１つのコマンドとして分類する（Ｓ４）。例えば、“service”コマンドについて、スクリプトＡ〜Ｃでは、「service httpd start」が２個、「service ntpd start」が２個ある。この場合、分類部１４は、「service httpd start」と「service ntpd start」とをそれぞれ別のコマンドとして分類する。
【００４６】
一方、分類部１４は、同じコマンドで、かつ同じ引数を設定するコマンドがない場合には、それらのコマンドを同じコマンドとして分類する（Ｓ５）。例えば、“cd”コマンドについて、各スクリプトに「cd /root」が１個、「cd /etc」が１個、「cd home」が１個存在する。この場合、各スクリプトに同じ引数を設定するコマンド「cd」が他にないので、分類部１４は、「cd /root」、「cd /etc」、「cd home」をそれぞれ、「cd」コマンドとして分類する。
【００４７】
また、分類部１４は、「service」コマンドのように、同一コマンドでもオプションに応じて意味が異なるコマンドを、それぞれ別のコマンドとして分類する（Ｓ６）。「service」コマンドのように、同一コマンドでもオプションに応じて意味が異なるコマンドとして、例えば、「service httpd start」（httpdプロセスを開始する）、「service httpd stop」（httpdプロセスを停止する）がある。
【００４８】
次に、抽出部１５は、図７に示すように、各スクリプトに存在するコマンド（Ｓ４及びＳ６で分類したコマンド）の数を計測する（Ｓ７）。以下では、Ｓ４−Ｓ６で分類したコマンド、すなわち、コマンド全体の集合に加え、コマンドと引数との組み合わせの集合をメタコマンドという。
【００４９】
次に、抽出部１５は、次の式を用いて、スクリプトｊにおける各メタコマンドｉのｔｆ−ｉｄｆ値（Ｗi,j）を計算する（Ｓ８）。スクリプトＡ，Ｂ、Ｃ，Ｄにおける各メタコマンドのｔｆ−ｉｄｆ値（Ｗi,j）の計算結果を図８に示す。
【数１】
2015118562.tif 000003
ｔｆi,j：スクリプトｊ内にあるメタコマンドの個数
ｄｆi,j：メタコマンドを含むスクリプト数
Ｎ：スクリプトの総数
【００５０】
次に、抽出部１５は、閾値ファイル２２に格納された閾値Ｔ１を読み出し、ｔｆ−ｉｄｆ値を計算したメタコマンドから、ｔｆ−ｉｄｆ値が閾値Ｔ１以上のメタコマンドを重要コマンドとして抽出する（Ｓ９）。ここでは、閾値Ｔ１を、例えば、０．２５とする。すると、各スクリプトから図９に示すメタコマンドが抽出される。また、以下では、重要コマンドのみを残したスクリプトを要約スクリプトと称する。
【００５１】
次に、算出部１６は、Ｓ９で抽出した重要コマンドに基づいて、要約スクリプトの類似度を計算する（Ｓ１０）。要約スクリプトの類似度とは、要約スクリプトをＸ，Ｙとすると、要約スクリプトＸのコマンド数×要約スクリプトＹのコマンド数の組み合わせのうち、同一のコマンドが存在する確率をいう。例えば、図９の場合、要約スクリプトＡ、Ｂの類似度は、一致する重要コマンド／（要約スクリプトＡのコマンド数×要約スクリプトＢのコマンド数）＝１／２＝５０（％）である。全てのスクリプトの組合せについて類似度を算出すると、図１０の結果が得られる。
【００５２】
次に、グループ化部１７は、閾値ファイル２２に格納された閾値Ｔ２を読み出し、要約スクリプトの類似度が閾値Ｔ２以上のスクリプトの組（類似グループ）を抽出する（Ｓ１１）。ここで、閾値Ｔ２を、例えば、０．５とする。すると、図１０の場合、類似グループとして、スクリプトＡとスクリプトＢのグループが得られ、スクリプトＣとスクリプトＤのグループが得られる。
【００５３】
表示制御部１８は、図１１に示すように、Ｓ１１で抽出した類似グループを、同一のディレクトリ内に表示させる（Ｓ１２）。
【００５４】
（実施例２）
実施例２では、第１の実施例に加えて、さらに、コマンドの使用状況に応じて、コマンドを分類する。
【００５５】
図１２は、本実施形態（実施例２）におけるサーバのコマンドログのステータス変更と、その要因になったコマンドとを関係付ける処理を説明するための図である。例えば、スクリプト管理装置１１は、運用自動化ツールにより実行されるサーバのログを取得し、サーバのサービス起動状況やポート使用状況等のステータスを監視する。
【００５６】
例えば、ポート使用状況のログに着目すると、図１２に示すように、コマンドの実行結果に応じて、ポートの使用状況のステータスが変更される。例えば、コマンド“service httpd start”を実行した場合、ポート番号＝８０のステータスが変更されている。この場合、スクリプト管理装置１１は、コマンド“service httpd start”とポート番号＝８０がＯＮになったことを示す情報を関係付けて、後述するステータス変更コマンド辞書テーブルに登録する。
【００５７】
また、コマンド“service ntpd start”を実行した場合、ポート番号＝８１のステータスが変更されている。この場合、スクリプト管理装置１１は、コマンド“service ntpd start”とポート番号＝８１がＯＮになったことを示す情報を関係付けて、後述するステータス変更コマンド辞書テーブルに登録する。
【００５８】
図１３は、本実施形態（実施例２）におけるスクリプト管理装置の一例を示す。スクリプト管理装置１１は、図２のスクリプト管理装置１１に、辞書テーブル生成部３１、コマンドログＤＢ３２、ステータス変更コマンド辞書テーブル３３を追加したものである。実施例１と同じ構成または機能については、実施例１で用いた符号と同じ符号を付し、その説明を省略する。
【００５９】
記憶部１９は、スクリプトＤＢ２０、コマンド辞書テーブル２１、コマンド対応テーブル２２、閾値ファイル２３、コマンドログＤＢ３２、ステータス変更コマンド辞書テーブル３３を格納する。コマンドログＤＢ３２には、運用自動化ツールにより実行されるサーバのログが格納されている。ステータス変更コマンド辞書テーブル３３には、コマンドと、そのコマンドの実行によりステータスが変更された情報が関係付けられて格納されている。
【００６０】
制御部１２は、読込部１３、分類部１４、抽出部１５、算出部１６、グループ化部１７、表示制御部１８、辞書テーブル生成部３１として機能する。辞書テーブル生成部３１は、コマンドログＤＢ３２を用いて、ステータス変更コマンド辞書テーブル３３を生成する。
【００６１】
図１４は、本実施形態（実施例２）におけるステータス変更コマンド辞書テーブルの一例を示す。ステータス変更コマンド辞書テーブル３３には、コマンドと、そのコマンドの実行によりステータスが変更された情報が関係付けられて格納されている。
【００６２】
図１５は、本実施形態（実施例２）におけるステータス変更コマンド辞書テーブル生成処理のフローの一例を示す。辞書テーブル生成部３１は、コマンドログＤＢ３２を用いて、サーバのサービス起動状況やポート使用状況等のサーバのステータスを監視する（Ｓ２１）。
【００６３】
コマンドの実行結果に応じて、ステータスが変更されると、辞書テーブル生成部３１は、そのコマンドと、そのコマンドの実行によりステータスが変更された情報を関係付けて、ステータス変更コマンド辞書テーブル３３に格納する（Ｓ２２）。
【００６４】
図１６は、本実施形態（実施例２）におけるスクリプト管理処理のフローの一例を示す。図１６は、図６のフローに、Ｓ３１，Ｓ３２の処理を追加したものである。記憶部１９にステータス変更コマンド辞書テーブル３３が格納されている場合（Ｓ３１で「Ｙｅｓ」）、分類部１４は、ステータス変更コマンド辞書テーブル３３を用いたコマンド分類処理を行う（Ｓ３２）。Ｓ３２の詳細については、図１７を用いて説明する。なお、実施例２では、Ｓ４−Ｓ６及びＳ３２で分類したコマンド、すなわち、コマンド全体の集合に加え、コマンドと引数との組み合わせの集合をメタコマンドという。
【００６５】
図１７は、本実施形態（実施例２）におけるステータス変更コマンド辞書テーブル３３を用いたコマンド分類処理（Ｓ３２）の詳細フローの一例を示す。分類部１４は、Ｓ１４で分類されなかったコマンド、すなわち、同じ引数を設定する同じコマンドがないコマンドについて、次の処理を行う。
【００６６】
分類部１４は、複数の同じコマンドで、かつ同じ引数を設定する同じコマンドがない場合、すなわち、コマンドは同じであるが、その引数が相互に異なる場合、次の処理を行う。すなわち、分類部１４は、異なる引数が設定されたそれらの同じコマンドを、ステータス変更コマンド辞書テーブル３３に問い合わせる。ステータス変更コマンド辞書テーブル３３にその引数が設定されたそのコマンドが登録されている場合、分類部１４は、そのステータス変更情報を取得する。分類部１４は、異なる引数が設定されたそれらの同じコマンドに対応するステータス変更情報を比較し、ステータスの変更箇所が異なる場合、それらのコマンドを相互に異なるコマンドとして分類する（Ｓ３２−１）。
【００６７】
Ｓ３２−１について、例えば、コマンド「service httpd start」とコマンド「service ntpd start」とが１つづつ存在するあるスクリプトがあるとする。この場合、「service httpd start」と「service ntpd start」は、異なる引数が設定された同じコマンドであるといえる。この場合、分類部１４は、ステータス変更コマンド辞書テーブル３３から「service httpd start」に対応するステータス変更情報と、「service ntpd start」に対応するステータス変更情報とを取得する。ここで、「service httpd start」に対応するステータス変更情報は、ポート番号＝８１がＯＮになったことを示す情報であるとする。「service ntpd start」に対応するステータス変更情報は、ポート番号＝８０がＯＮになったことを示す情報であるとする。この場合、２つのステータス変更情報間で、ステータスの変更箇所が異なるので、分類部１４は、コマンド「service httpd start」とコマンド「service ntpd start」は相互に異なるコマンドであると分類する。
【００６８】
分類部１４は、Ｓ３２−２で分類処理されなかったコマンド、すなわち、コマンドは同じであるが、その引数が相互に異なる場合であって、ステータス変更コマンド辞書テーブル３３に登録されていないコマンドについて、Ｓ５の処理を行う（Ｓ３２−２）。すなわち、分類部１４は、コマンドは同じであるが、その引数が相互に異なる場合であって、ステータス変更コマンド辞書テーブル３３に登録されていないコマンドを、同じコマンドとして分類する。その後、分類部１４は、Ｓ６の処理を実行する。
【００６９】
なお、Ｓ５及びＳ３２−２では、分類部１４は、同じコマンドのうち、同じ引数を設定するコマンドがない場合には、それらのコマンドを同じコマンドとして分類したが、引数が異なる場合にはそれらのコマンドを相互に異なるコマンドとして分類してもよい。
【００７０】
実施例１または２を用いれば、スクリプト間の類否判断の精度を向上することができる。また、ディスプレイ上に、同一のディレクトリに類似グループのスクリプトが表示されるので、目的のスクリプトを容易に見つけることができる。
【００７１】
図１８は、本実施形態におけるプログラムを実行するコンピュータのハードウェア環境の構成ブロック図の一例である。コンピュータ４０は、スクリプト管理装置１１として機能する。コンピュータ４０は、ＣＰＵ４２、ＲＯＭ４３、ＲＡＭ４６、通信Ｉ／Ｆ４４、記憶装置４７、出力Ｉ／Ｆ４１、入力Ｉ／Ｆ４５、読み取り装置４８、バス８９、出力機器５１、入力機器５２によって構成されている。
【００７２】
ここで、ＣＰＵは、中央演算装置を示す。ＲＯＭは、リードオンリメモリを示す。ＲＡＭは、ランダムアクセスメモリを示す。Ｉ／Ｆは、インターフェースを示す。バス４９には、ＣＰＵ４２、ＲＯＭ４３、ＲＡＭ４６、通信Ｉ／Ｆ４４、記憶装置４７、出力Ｉ／Ｆ４１、入力Ｉ／Ｆ４５、及び読み取り装置４８が接続されている。読み取り装置４８は、可搬型記録媒体を読み出す装置である。出力機器５１は、出力Ｉ／Ｆ４１に接続されている。入力機器５２は、入力Ｉ／Ｆ４５に接続にされている。
【００７３】
記憶装置４７としては、ハードディスク、フラッシュメモリ、磁気ディスクなど様々な形式の記憶装置を使用することができる。記憶装置４７またはＲＯＭ４３には、ＣＰＵ４２を読込部１３、分類部１４、抽出部１５、算出部１６、グループ化部１７、表示制御部１８、辞書テーブル生成部３１として機能させるプログラムが格納されている。また、記憶装置４７またはＲＯＭ４３には、スクリプトＤＢ２０、コマンド辞書テーブル２１、コマンド対応テーブル２２、閾値ファイル２３、コマンドログＤＢ３２、ステータス変更コマンド辞書テーブル３３が格納されている。ＲＡＭ４６には、類似度２３、類似グループが一時的に記憶される。
【００７４】
ＣＰＵ４２は、記憶装置４７等に格納した上記実施形態で説明した処理を実現するプログラムを読み出し、当該プログラムを実行する。
【００７５】
上記実施形態で説明した処理を実現するプログラムは、プログラム提供者側から通信ネットワーク５０、および通信Ｉ／Ｆ４４を介して、例えば記憶装置４７に格納されてもよい。また、上記実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置４８にセットされて、ＣＰＵ４２によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＩＣカード、ＵＳＢメモリ装置など様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置４８によって読み取られる。
【００７６】
また、入力機器５２には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力機器５１には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク５０は、インターネット、ＬＡＮ、ＷＡＮ、専用線、有線、無線等の通信網であってよい。
【００７７】
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【００７８】
上記実施形態に関し、更に以下の付記を開示する。
（付記１）
コンピュータに、
複数のスクリプトに含まれるコマンドから、出現数に基づき、コマンドまたはコマンドと引数との組である複数のメタコマンドを抽出し、
前記複数のスクリプトそれぞれに含まれる前記複数のメタコマンドの出現数情報と、前記複数のスクリプトそれぞれの前記複数のメタコマンドの稀少さとに基づいて、前記複数のスクリプトのそれぞれに含まれる前記メタコマンドから特定のメタコマンドを抽出し、
前記複数のスクリプトのそれぞれの相互間で比較し、抽出した前記特定のメタコマンドの組合せにおいて同一の前記メタコマンドの組合せが存在する確率を算出し、該確率に基づいて、比較したスクリプト同士が類似すると判定する
処理を実行させることを特徴とするスクリプト管理プログラム。
（付記２）
前記複数のメタコマンドの抽出において、前記複数のスクリプトのそれぞれについて、前記コマンドと前記引数との同一の組が複数組ある場合には、１組の前記コマンドと前記引数を同じメタコマンドとして抽出する
ことを特徴とする付記１に記載のスクリプト管理プログラム。
（付記３）
前記複数のメタコマンドの抽出において、前記複数のスクリプトのそれぞれについて、引数が相互に異なる同じコマンドが複数ある場合、該コマンドのそれぞれを、同じメタコマンドとして抽出する
ことを特徴とする付記１または２に記載のスクリプト管理プログラム。
（付記４）
前記複数のメタコマンドの抽出において、前記複数のスクリプトのそれぞれについて、引数が相互に異なる同じコマンドが複数ある場合、記憶装置から、該コマンドそれぞれの実行による情報処理装置の動作状況の変更に関する動作状況変更情報を取得し、該コマンドそれぞれについて取得した該動作状況変更情報の内容が異なる場合、該コマンドそれぞれを、相互に異なるメタコマンドとして抽出する
ことを特徴とする付記１または２に記載のスクリプト管理プログラム。
（付記５）
前記複数のメタコマンドの抽出において、システム環境に応じて表記方法が相違するコマンド同士を対応付けたコマンド対応情報に基づいて、表記方法の異なるコマンドであって同一の意味を示す該コマンドを、同じメタコマンドとして抽出する
ことを特徴とする付記１〜４のうちいずれか１項に記載のスクリプト管理プログラム。
（付記６）
複数のスクリプトに含まれるコマンドから、出現数に基づき、コマンドまたはコマンドと引数との組である複数のメタコマンドを抽出する第１抽出部と、
前記複数のスクリプトそれぞれに含まれる前記複数のメタコマンドの出現数情報と、前記複数のスクリプトそれぞれの前記複数のメタコマンドの稀少さとに基づいて、前記複数のスクリプトのそれぞれに含まれる前記メタコマンドから特定のメタコマンドを抽出する第２抽出部と、
前記複数のスクリプトのそれぞれの相互間で比較し、抽出した前記特定のメタコマンドの組合せにおいて同一の前記メタコマンドの組合せが存在する確率を算出し、該確率に基づいて、比較したスクリプト同士が類似すると判定する判定部と、
を備えることを特徴とするスクリプト管理装置。
（付記７）
前記第１抽出部は、前記複数のスクリプトのそれぞれについて、前記コマンドと前記引数との同一の組が複数組ある場合には、１組の前記コマンドと前記引数を同じメタコマンドとして抽出する
ことを特徴とする付記６に記載のスクリプト管理装置。
（付記８）
前記第１抽出部は、前記複数のスクリプトのそれぞれについて、引数が相互に異なる同じコマンドが複数ある場合、該コマンドのそれぞれを、同じメタコマンドとして抽出する
ことを特徴とする付記６または７に記載のスクリプト管理装置。
（付記９）
前記スクリプト管理装置は、さらに、
該コマンドそれぞれの実行による情報処理装置の動作状況の変更に関する動作状況変更情報を格納する動作状況変更情報格納部
を備え、
前記第１抽出部は、前記複数のスクリプトのそれぞれについて、引数が相互に異なる同じコマンドが複数ある場合、前記動作状況変更情報格納部から、実行した該コマンドそれぞれに対応する前記動作状況変更情報を取得し、該実行した該コマンドそれぞれに対応する該動作状況変更情報の内容が異なる場合、該実行した該コマンドそれぞれを、相互に異なるメタコマンドとして抽出する
ことを特徴とする付記６または７に記載のスクリプト管理装置。
（付記１０）
前記スクリプト管理装置は、さらに、
システム環境に応じて表記方法が相違するコマンド同士を対応付けたコマンド対応情報を格納するコマンド対応情報格納部
を備え、
前記第１抽出部は、前記コマンド対応情報に基づいて、表記方法の異なるコマンドであって同一の意味を示す該コマンドを、同じメタコマンドとして抽出する
ことを特徴とする付記６〜９のうちいずれか１項に記載のスクリプト管理装置。
（付記１１）
コンピュータが
複数のスクリプトに含まれるコマンドから、出現数に基づき、コマンドまたはコマンドと引数との組である複数のメタコマンドを抽出し、
前記複数のスクリプトそれぞれに含まれる前記複数のメタコマンドの出現数情報と、前記複数のスクリプトそれぞれの前記複数のメタコマンドの稀少さとに基づいて、前記複数のスクリプトのそれぞれに含まれる前記メタコマンドから特定のメタコマンドを抽出し、
前記複数のスクリプトのそれぞれの相互間で比較し、抽出した前記特定のメタコマンドの組合せにおいて同一の前記メタコマンドの組合せが存在する確率を算出し、該確率に基づいて、比較したスクリプト同士が類似すると判定する
処理を実行することを特徴とするスクリプト管理方法。
【符号の説明】
【００７９】
１      スクリプト管理装置
２      第１抽出部
３      第２抽出部
４      判定部
５      動作状況変更情報格納部
６      コマンド対応情報格納部
１１    スクリプト管理装置
１２    制御部
１３    読込部
１４    分類部
１５    抽出部
１６    算出部
１７    グループ化部
１８    表示制御部
１９    記憶部
２０    スクリプトＤＢ
２１    コマンド辞書テーブル
２２    コマンド対応テーブル
２３    閾値ファイル
３１    辞書テーブル生成部
３２    コマンドログＤＢ
３３    ステータス変更コマンド辞書テーブル
【図１】
2015118562.tif 000004
【図２】
2015118562.tif 000005
【図３】
2015118562.tif 000006
【図４】
2015118562.tif 000007
【図５】
2015118562.tif 000008
【図６】
2015118562.tif 000009
【図７】
2015118562.tif 000010
【図８】
2015118562.tif 000011
【図９】
2015118562.tif 000012
【図１０】
2015118562.tif 000013
【図１１】
2015118562.tif 000014
【図１２】
2015118562.tif 000015
【図１３】
2015118562.tif 000016
【図１４】
2015118562.tif 000017
【図１５】
2015118562.tif 000018
【図１６】
2015118562.tif 000019
【図１７】
2015118562.tif 000020
【図１８】
2015118562.tif 000021