ハニカムウエアのブログ

ハニカムウエアのブログ

システム開発、セキュリティ対策についての記事を書いています。

インフラ系:UNIX/Linux 管理スクリプトの基本構成 vol.2

こんばんは、ハニカムウエアのインフラ担当のロボ 2号です。

前回、「ことば」であらわした処理内容をシェルスクリプトのサンプルとして

記載してみたいと思います。

 

実際には実に多くの方法があると思いますので、一つのサンプルとしてご覧ください。

 ----

私が良く使うのは以下のような形式です。

あまり難しいコマンドや記述がないため、覚えやすく読みやすいのでよく使っています。

while は別プロセスを使用(forkして動作)するため、while の中で設定した変数はループ処理の外では

使用できませんが、個人的に for 文より使いやすいのでこちらにしています。

 

スクリプトは sh(B shell), csh, bash 等のシェルスクリプトperl, python など

別途インストールが必要なものまで様々ですが最近はどの OS でも

利用できる事が多く、記載のしやすい bash を選んでいます。

 

# 【 設定ファイル読込サンプル 】

# 変数設定

V_INIFILE="設定ファイルのフルパス"

V_RET=0                              # ループ内での異常処理判定用の変数

#   設定ファイルの読込みとループ処理

cat "${C_INIFILE}" | while read V_LINE;

do

    #   記載パラメータの読取り

    V_PRM1=`echo "${V_LINE}" | awk '{ print $1 }'`         # 1列目のパラメータ

    V_PRM2=`echo "${V_LINE}" | awk '{ print $2 }'`         # 2列目のパラメータ

 

    # パラメータを使用した処理を記載

    # 例:V_PRM1 のファイルと V_PRM2 のファイルを比較して差分を標準出力に表示する。

    #        差分があった場合にはスクリプトを異常ステータス(1)で終了させる。

    diff "${V_PRM1}" "${V_PRM2}"

    V_RET_DIFF="${?}"

    if [ 0 -ne ${V_RET_DIFF} ]; then

        echo "ファイル ${V_PRM1} と ${V_PRM2} に差分が見つかりました。終了します。"

        exit 1

    fi

done

#   ループ内処理の結果を受け取り

V_RET_LOOP="${?}"

 

#   正常/異常により処理を分岐....

----

と、こんな具合に基本的な構成は十分程度あれば記載できてしまいます。

 

ファイルを読んで順次処理するといった記述が簡単に出来るのが

シェルスクリプトの魅力の一つでもあると思いますので

この基本構成について、皆さんの必要な処理に使えるかぜひ一度試してみて下さい。

 

また、こんな方法があるよ!という方は教えて頂けるとロボ 2号(私)が

たいへん喜びます。

 

 

それでは、今回はこの辺で。