linux网卡绑定可以帮助我们实现接入层的高可用和链路聚合的能力。为了方便日常配置和自动化部署,编写了相关脚本进行自动配置。
注:脚本使用主备模式,如需使用其他模式请自行修改
脚本如下:
RHEL5
#!/bin/bash
#check bonding.conf
bondname=$1
bondvar=${bondname:0:4}
member1=$2
member1var=${member1:0:3}
member2=$3
member2var=${member2:0:3}
ip=$4
mask=$5
gw=$6
case $bondvar in
bond)
case $member1var in
eth)
case $member2var in
eth)
if test -e /etc/modprobe.d/bonding.conf
then
echo "The bonding.conf is exists" && exit 0
else
echo "alias $bondname bonding" >> /etc/modprobe.conf
fi
if test -e /etc/sysconfig/network-scripts/ifcfg-"$member1"
then
echo "ifcfg-$member1 is exists backup to ifcfg-$member1.bak"
mv /etc/sysconfig/network-scripts/ifcfg-"$member1" /etc/sysconfig/network-scripts/ifcfg-"$member1".bak
echo "writing config to new ifcfg-$member1"
(
cat <<EOF
DEVICE=$member1
BOOTPROTO=none
ONBOOT=yes
MASTER=$bondname
SLAVE=yes
USERCTL=no
EOF
) > /etc/sysconfig/network-scripts/ifcfg-"$member1"
echo "create ifcfg-$member1 success"
else
echo "ifcfg-$member1 is not exists,check it please!!" && exit 0
fi
if test -e /etc/sysconfig/network-scripts/ifcfg-"$member2"
then
echo "ifcfg-$member2 is exists backup to ifcfg-$member2.bak"
mv /etc/sysconfig/network-scripts/ifcfg-"$member2" /etc/sysconfig/network-scripts/ifcfg-"$member2".bak
echo "writing config to new ifcfg-$member2"
(
cat <<EOF
DEVICE=$member2
BOOTPROTO=none
ONBOOT=yes
MASTER=$bondname
SLAVE=yes
USERCTL=no
EOF
) > /etc/sysconfig/network-scripts/ifcfg-"$member2"
echo "create ifcfg-$member2 success"
else
echo "ifcfg-$member2 is not exists,check it please!!" && exit 0
fi
if test -e /etc/sysconfig/network-scripts/ifcfg-"$bondname"
then
echo "ifcfg-$bondname is exists,check it please!!" && exit 0
else
echo "writing config to new ifcfg-$bondname"
(
cat <<EOF
DEVICE=$bondname
IPADDR=$ip
NETMASK=$mask
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS='mode=1 miimon=100'
GATEWAY=$gw
EOF
) > /etc/sysconfig/network-scripts/ifcfg-$bondname
echo "create ifcfg-$bondname sccess"
fi
;;
*)
echo "createbonding useage:<bond nic name> <member1> <member2> [IP address] [netmask] [gateway]" && exit 1
;;
esac
;;
*)
echo "createbonding useage:<bond nic name> <member1> <member2> [IP address] [netmask] [gateway]" && exit 1
;;
esac
;;
*)
echo "createbonding useage:<bond nic name> <member1> <member2> [IP address] [netmask] [gateway]" && exit 1
;;
esac
#end of script
RHEL6
#!/bin/bash
#check bonding.conf
bondname=$1
bondvar=${bondname:0:4}
member1=$2
member1var=${member1:0:3}
member2=$3
member2var=${member2:0:3}
ip=$4
mask=$5
gw=$6
case $bondvar in
bond)
case $member1var in
eth)
case $member2var in
eth)
if test -e /etc/modprobe.d/bonding.conf
then
echo "The bonding.conf is exists" && exit 0
else
echo "alias $bondname bonding" > /etc/modprobe.d/bonding.conf
fi
if test -e /etc/sysconfig/network-scripts/ifcfg-"$member1"
then
echo "ifcfg-$member1 is exists backup to ifcfg-$member1.bak"
mv /etc/sysconfig/network-scripts/ifcfg-"$member1" /etc/sysconfig/network-scripts/ifcfg-"$member1".bak
echo "writing config to new ifcfg-$member1"
(
cat <<EOF
DEVICE=$member1
BOOTPROTO=none
ONBOOT=yes
MASTER=$bondname
SLAVE=yes
USERCTL=no
EOF
) > /etc/sysconfig/network-scripts/ifcfg-"$member1"
echo "create ifcfg-$member1 success"
else
echo "ifcfg-$member1 is not exists,check it please!!" && exit 0
fi
if test -e /etc/sysconfig/network-scripts/ifcfg-"$member2"
then
echo "ifcfg-$member2 is exists backup to ifcfg-$member2.bak"
mv /etc/sysconfig/network-scripts/ifcfg-"$member2" /etc/sysconfig/network-scripts/ifcfg-"$member2".bak
echo "writing config to new ifcfg-$member2"
(
cat <<EOF
DEVICE=$member2
BOOTPROTO=none
ONBOOT=yes
MASTER=$bondname
SLAVE=yes
USERCTL=no
EOF
) > /etc/sysconfig/network-scripts/ifcfg-"$member2"
echo "create ifcfg-$member2 success"
else
echo "ifcfg-$member2 is not exists,check it please!!" && exit 0
fi
if test -e /etc/sysconfig/network-scripts/ifcfg-"$bondname"
then
echo "ifcfg-$bondname is exists,check it please!!" && exit 0
else
echo "writing config to new ifcfg-$bondname"
(
cat <<EOF
DEVICE=$bondname
IPADDR=$ip
NETMASK=$mask
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS='mode=1 miimon=100'
GATEWAY=$gw
EOF
) > /etc/sysconfig/network-scripts/ifcfg-$bondname
echo "create ifcfg-$bondname sccess"
fi
;;
*)
echo "createbonding useage:<bond nic name> <member1> <member2> [IP address] [netmask] [gateway]" && exit 1
;;
esac
;;
*)
echo "createbonding useage:<bond nic name> <member1> <member2> [IP address] [netmask] [gateway]" && exit 1
;;
esac
;;
*)
echo "createbonding useage:<bond nic name> <member1> <member2> [IP address] [netmask] [gateway]" && exit 1
;;
esac
#end of script
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞4
添加新评论0 条评论