1

そのため、負荷分散のために /etc/resolv.conf を変更しようとしています。それでは、resolv.conf が次のようになっているとしましょう。

search server.com
nameserver 192.1.168.0
nameserver 192.1.168.1
nameserver 192.1.168.2

目標は、以下のスクリプトに基づいてプライマリ サーバーを変更することです。したがって、サーバーの IP アドレスの最後のオクテットが mod 6 = 1 の場合、resolv.conf は次のようになります。

search server.com
nameserver 192.1.168.2
nameserver 192.1.168.0
nameserver 192.1.168.1

負荷分散を行うスクリプトの一部を次に示します。

# Load balance
LAST_OCTET_OF_IP=`/sbin/ifconfig -a |grep "inet addr" |grep 128|cut -d : -f 2|cut -d" " -f1|cut -d'.' -f 4`
MOD6_IP=$(( $LAST_OCTET_OF_IP % 6 ))

if [ $MOD6_IP -eq 1 ]
    # need this part

if [ $MOD6_IP -eq 2 ]
    # need this part

この例で、SED を使用して複数の行を置き換えるにはどうすればよいですか?

4

2 に答える 2

1

を使用することがどれほど重要かわかりませんsed

このロジックを使用するのはどうですか:

  1. 常に同じ最初の行を取得します。search server.com
  2. それにあなたが望む正しい行を追加してください
  3. すでに追加したnameserver行を除いて、その行に追加します

このようなもの:

LAST_OCTET_OF_IP=`/sbin/ifconfig -a |grep "inet addr" |grep 128|cut -d : -f 2|cut -d" " -f1|cut -d'.' -f 4`
MOD6_IP=$(( $LAST_OCTET_OF_IP % 6 ))
{
grep ^search /etc/resolv.conf
grep $MOD6_IP$ /etc/resolv.conf
grep -v $MOD6_IP$ /etc/resolv.conf | grep nameserver
} > /etc/resolv.conf.new
于 2013-10-12T20:43:00.037 に答える
0

あなたの回答を見ました。申し訳ありませんが、もっと早く返信するつもりでした。

結局、私は sed を使用しませんでした (sed は私に勧められましたが、それでもそれを使用して理解できませんでした)。だから、私はこのようにそれをやった:

[ $MOD6_IP -eq 1 ] の場合

それから

猫 <<\EOF>/etc/newresolv

server.com を検索

ネームサーバー 192.1.168.0

ネームサーバー 192.1.168.1

ネームサーバー 192.1.168.2

EOF

フィ

[ $MOD6_IP -eq 2 ] の場合

それから

cat<<\EOF> /etc/newresolv

server.com を検索

ネームサーバー 192.1.168.1

ネームサーバー 192.1.168.2

ネームサーバー 192.1.168.0

EOF

フィ

cp /etc/newresolv /etc/resolv.conf

于 2013-10-25T16:51:28.707 に答える