0

私は、ServerAliasをApache構成ファイルに自動的に追加し、Apacheを再起動するスクリプトを作成しました。これは、一般的なシェルスクリプトをかなり理解しsedtrおそらくはシェルスクリプトを使用したものです。これは私が思いついたものです:

cp /etc/httpd/sites/site.conf tmphost &&
sed s/ServerName\ site.com/ServerName\ site.com^#ServerAlias\ sub.site.com/ \
        tmphost |
    tr '^#' '\n\t' >/etc/httpd/sites/site.conf &&
rm -f tmphost &&
apachectl restart

基本的に、私はコピーを作成し、ServerName行をそれ自体+新しいエイリアスに置き換え、tr改行とタブを配置するために使用し(sedそれについては奇妙でしたか?)、古い構成ファイルを上書きし、コピーを削除してから、Apacheを再起動します。

それは機能しますが、私の言いたいことを知っていれば、ママを誇りに思うことはありません。それをクリーンアップする方法について何かアイデアはありますか?

4

2 に答える 2

3

ServerName行の後にServerAlias行を追加する場合は、「append」コマンドを使用して行を追加してみませんか。

sed '/ServerName site.com/a\
    ServerAlias sub.site.com' tmphost >/etc/httpd/sites/site.conf

余分な行の先頭に「タブ」がありますが、これは必要と思われます。

-iGNU sedを使用している場合は、オプションを使用して一時ファイルを使用せずにインプレースで編集を行うことができます(ただし-i、編集しているファイルに複数のハードリンクがある場合はオプションを使用しないでください。シンボリックリンクの場合は使用しないでください。 、どちらか; William Pursellからの以下のコメントを参照してください)。

コードを次のようにラップする必要があることに注意してください。

trap "rm -f tmphost; exit 1" 0 1 2 3 13 15
...script manipulating tmphost...
rm -f tmphost
trap 0

シグナルが原因でシェルが終了した場合に一時ファイルが残らないようにします。もちろん、インプレース変更がある場合は、一時ファイルはまったく必要ありません。

于 2012-09-12T20:42:25.050 に答える
0

sedを使用してServerAilasを直接追加する方法が好きです:

sed -i "0,/^ServerName.\+/s//\0\nServerAlias sub.site.com/" /etc/httpd/sites/site.conf
apachectl reload
于 2013-03-25T13:20:55.170 に答える