人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CentOSのシェルスクリプトについて。

シェルスクリプトでサーバーを半自動設定したいと思います。
その際によく使われるコードの組み立て方を教えてください。


例としてメールサーバーだったら、
最初のインストールは、シェルスクリプトに、

yum -y install postfix

と書けばいいと思うのですが、

「main.cf」等、設定ファイルの書き換え方などがわかりません。


具体的には、以下のようなことが必要だと思うのですが、どうすれば良いのでしょうか。

<シェルスクリプトでmain.cfを弄る時において>
・まずファイルを開く
・ある項目があるかないか、あってもコメントアウトされているかなどの判定。
・キーボードから対話的に入力しながら、「#myhostname」などのコメントを外して書き換え。
・ファイルの最終行へ必要項目を追加。


ほかにも、シェルスクリプトでのサーバー半自動設定によく使われる手法がありましたらお教えください。


●質問者: tetlis
●カテゴリ:コンピュータ インターネット
✍キーワード:CentOS CF postfix yum あるかな
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
●150ポイント

インストール後の処理は、ぼくなら、こう書くと思います。


  1. grep, sed, awk を使って、元の設定ファイルの内容を確認し、行の有無などをシェル変数に設定する
  2. 1. の結果をもとに、echo + read を使って、対話的に必要事項を入力させる(結果はシェル変数へ)
  3. sed, awk を使って、設定ファイルの内容を変更、追記する


雰囲気、こんな感じになるか、と。


DEF=/var/opt/○○/main.cf

# 内容を調べる
XXX=`grep .... $DEF`  # とか、

grep -q .... $DEF
XXX=$?  # とか、

# 対話的に設定値を入力
if [ "$XXX" == "" ]
then
 echo ....
 read YYY
fi

# 設定ファイルを書き換え
mv $DEF ${DEF}.backup
cat ${DEF}.backup |\
sed -e "/xxxxx/s/xxxxx/yyyyy/" |\
 ...
awk '
 END {
 print "xxxxxx"
 print "xxxxxx"
 ...
 }
 ' > $DEF

実際には、適宜、書き換えの処理なんかを関数にしたりするとは思いますが。


ほかにも、シェルスクリプトでのサーバー半自動設定によく使われる手法がありましたらお教えください。

perl のスクリプトで、ガツンと書いちゃう人が多いかも。

その場合は、ほぼ普通のプログラムなので、質問にあるようにファイルをオープンして、

内容を読みこんで、などなど、というような感じになるでしょう。

定義ファイルを行単位の配列で、全部読み込んでおいて、

それをループを回しながら処理する、という感じでしょうね。


2 ● JULY
●150ポイント

Postfix に限った話をすれば、postconf コマンドで main.cf の内容を書き換えられます。

Postfix manual - postconf(1)

例えば、

# postconf -e myhostname=mx.example.com

とすると、設定する行が無ければ追加され、既にあれば置き換えられます。


ただ、どんな設定ファイルでも使える手は、なかなか無いと思います。


一から作るとしたら、それぞれの設定ファイル用にテンプレートを作り、そのテンプレートを使ってキーワードを置き換えていく、というのが現実的かと思います。


実際に試した事は無いですが、Webmin のソースファイルは参考になるかもしれません。Webmin 自体は Perl で書かれた CGI プログラムの塊なので、そこから使えるところを探し出して使えば、出来るとは思います。ただし、かなり面倒だと思いますが(^^;。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ