📄 mac
字号:
#!/bin/shIFCONFIG=/sbin/ifconfigIFUP=/sbin/ifupIFDOWN=/sbin/ifdownUSAGE="usage: $0 IFACE MAC-ADDR {start | stop | status}";CAT=/bin/catSLEEP=/bin/sleepCONF=/etc/ha/ha.confGREP=/bin/grepLOG=/var/log/ha-logDATE=/bin/dateSCRIPTDIR=/etc/ha/scriptsCUT=/usr/bin/cutUNAME=/bin/unameSED=/bin/sedRM=/bin/rmcase $3 instop) if [ ! -f /var/run/heartbeat.MAC ]; then echo "MAC already stopped" exit 0; fi HW=`cat /var/run/heartbeat.MAC` $IFDOWN $1 $SLEEP 1 $IFCONFIG $1 hw ether $HW RC=$? $SLEEP 1 $IFUP $1 if [ "$RC" -eq 0 ]; then /bin/rm -f /var/run/heartbeat.MAC else exit 1 fi ;;start) $SLEEP 10 # lecture du fichier de conf avec strip des caract鑢es dangeureux PRIVATE_ADDR=`$GREP -x -E "PRIVATE_ADDR=[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" $CONF` if [ "$PRIVATE_ADDR" == "" ]; then echo "HA : Erreur dans le fichier de configuration ! (PRIVATE_ADDR)" >> $LOG exit 1 fi export $PRIVATE_ADDR PRIVATE_BCAST=`$GREP -x -E "PRIVATE_BCAST=[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" $CONF` if [ "$PRIVATE_BCAST" == "" ]; then echo "HA : Erreur dans le fichier de configuration ! (PRIVATE_BCAST)" >> $LOG exit 1 fi export $PRIVATE_BCAST PRIVATE_IF=`$GREP -x -E "PRIVATE_IF=[a-z]{1,3}[0-9]+:?[0-9]*" $CONF` if [ "$PRIVATE_IF" == "" ]; then echo "HA : Erreur dans le fichier de configuration (PRIVATE_IF)!" >> $LOG exit 1 fi export $PRIVATE_IF SERVICE_ADDR=`$GREP -x -E "SERVICE_ADDR=[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" $CONF` if [ "$SERVICE_ADDR" == "" ]; then echo "HA : Erreur dans le fichier de configuration ! (SERVICE_ADDR)" >> $LOG exit 1 fi export $SERVICE_ADDR SERVICE_IF=`$GREP -x -E "SERVICE_IF=[a-z]{1,3}[0-9]+:?[0-9]*" $CONF` if [ "$SERVICE_IF" == "" ]; then echo "HA : Erreur dans le fichier de configuration ! (SERVICE_IF)" >> $LOG exit 1 fi export $SERVICE_IF MODE=`$GREP -x -E "MODE=\w+$" $CONF` export $MODE if [ "$MODE" != "master" ] && [ "$MODE" != "slave" ]; then echo "HA : Erreur dans le fichier de configuration ! (MODE)" >> $LOG exit 1 fi SERVICE_MAC=`$GREP -x -E "SERVICE_MAC=[a-zA-Z0-9]{2}:[a-zA-Z0-9]{2}:[a-zA-Z0-9]{2}:[a-zA-Z0-9]{2}:[a-zA-Z0-9]{2}:[a-zA-Z0-9]{2}" $CONF` if [ "$SERVICE_MAC" == "" ]; then echo "HA : Erreur dans le fichier de configuration ! (SERVICE_MAC)" >> $LOG exit 1 fi export $SERVICE_MAC BASE_IF=`echo $SERVICE_IF | $CUT -d ":" -f1` # Mise en place de la nouvelle adresse MAC if [ -f /var/run/heartbeat.MAC ]; then echo "MAC already set" exit 1; fi SHW=`$IFCONFIG $1 | $GREP HWaddr | $SED "s/.*HWaddr //"` $SLEEP 1 $IFDOWN $1 $SLEEP 1 $IFCONFIG $1 hw ether $2 RC=$? $SLEEP 1 $IFUP $1 if [ "$RC" -eq "0" ]; then echo $SHW > /var/run/heartbeat.MAC else exit 1 fi # Envoi d'un paquet ARP gratuit pour signaler l'@ MAC associ閑 a l'ip de service $SCRIPTDIR/arp -i $BASE_IF -d $SERVICE_ADDR -r $SERVICE_MAC -s $SERVICE_ADDR -t ff:ff:ff:ff:ff:ff -n 2 2>&1 1>/dev/null if [ $? -ne 0 ]; then echo "HA : Erreur lors de l'envoi du paquet ARP gratuit pour l'ip de service" >> $LOG fi # Si l'interface physique est la meme pour l'ip prive et l'ip de service # On envoie aussi un ARP pour l'ip priv
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -