所以,我正在尝试修改/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替换多行?
答案 0 :(得分:1)
不确定使用sed
的重要性。
如何使用这个逻辑:
search server.com
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
答案 1 :(得分:0)
我看到了你的回答,对不起,我打算早点回复。
毕竟我最终没有使用sed(sed被推荐给我,但我还是无法用它来解决它)。 所以,我最终这样做了:
如果[$ MOD6_IP -eq 1]
然后
cat<< \ EOF> / etc / newresolv
搜索server.com
nameserver 192.1.168.0
nameserver 192.1.168.1
nameserver 192.1.168.2
EOF
网络连接
如果[$ MOD6_IP -eq 2]
然后
猫<< \&EOF GT;在/ etc / newresolv
搜索server.com
nameserver 192.1.168.1
nameserver 192.1.168.2
nameserver 192.1.168.0
EOF
网络连接
cp / etc / newresolv /etc/resolv.conf