월간 보관물: 2020 6월

bonding status check script

  1. bonding status check script
    1. [root@yj26-ovstest1 ~]# cat bonding-check-test.sh
      #!/bin/bash
      BONDING_CHECK_IP=$@
      PING_CHECK() {
       for in $BONDING_CHECK_IP
       do
         N=1
         while [ $N -ge 1 ]
         do
           ping $F -w 1 -c 1 -q >/dev/null
           if [ $? != 0 ] ; then
             let N+=1
             echo Not pingable $F
           else
             N=0
           fi
         done
       done
      }
      if [ -d /proc/net/bonding/ ] ; then
        IFCFGFILE=`ls /etc/sysconfig/network-scripts/ifcfg-*`
        for in $IFCFGFILE
        do
        source $T
        if "${SLAVE}" "yes" -a -n "${MASTER}" ]; then
          echo "-${DEVICE}" /sys/class/net/${MASTER}/bonding/slaves 2>/dev/null
          echo "bonding master ${MASTER}'s slave $DEVICE out"
          PING_CHECK
          sleep 1
          echo "+${DEVICE}" /sys/class/net/${MASTER}/bonding/slaves 2>/dev/null
          echo "bonding master ${MASTER}'s slave $DEVICE in"
        unset SLAVE DEVICE MASTER
        fi
        done
      fi
      which ovs-vsctl >/dev/null
      if [ $? == 0 ] ; then
        BONDMASTERS=`ovs-appctl bond/list|tail -n +2 |awk '{print $1}'`
        for in $BONDMASTERS
        do
          echo $i
          for in `ovs-appctl bond/show $i |grep ^slave|awk '{print $2}'`
          do
            BOND_INTERFACE=${I/:}
            ip link set down $BOND_INTERFACE
            echo "ovs bonding master ${i}'s slave $BOND_INTERFACE down"
            PING_CHECK
            sleep 1
            ip link set up $BOND_INTERFACE
            echo "ovs bonding master ${i}'s slave $BOND_INTERFACE up"
          done
        done
      fi
  2. test
    [root@yj26-ovstest2 ~]# bash bonding-check-test.sh 1.1.1.1 3.3.3.3 8.8.8.8
    bonding master bondtest's slave eth6 out
    Not pingable 3.3.3.3
    Not pingable 3.3.3.3
    Not pingable 3.3.3.3
    Not pingable 3.3.3.3
    Not pingable 3.3.3.3
    Not pingable 3.3.3.3
    Not pingable 3.3.3.3
    Not pingable 3.3.3.3
    bonding master bondtest's slave eth6 in
    bonding master bondtest's slave eth7 out
    bonding master bondtest's slave eth7 in
    bond-testbr
    ovs bonding master bond-testbr's slave eth3 down
    ovs bonding master bond-testbr's slave eth3 up
    ovs bonding master bond-testbr's slave eth4 down
    ovs bonding master bond-testbr's slave eth4 up
    bond-testbr2
    ovs bonding master bond-testbr2's slave eth1 down
    ovs bonding master bond-testbr2's slave eth1 up
    ovs bonding master bond-testbr2's slave eth2 down
    ovs bonding master bond-testbr2's slave eth2 up
    [root@yj26-ovstest2 ~]# ip -4 -o a
    1: lo    inet 127.0.0.1/8 scope host lo\       valid_lft forever preferred_lft forever
    2: eth0    inet 10.26.1.212/24 brd 10.26.1.255 scope global eth0\       valid_lft forever preferred_lft forever
    10: testbr    inet 10.26.2.22/24 scope global testbr\       valid_lft forever preferred_lft forever
    13: bondtest    inet 3.3.3.4/24 scope global bondtest\       valid_lft forever preferred_lft forever
  3. interface 1개씩 내린 후 ping이 성공 할때까지 보내는 script 임.