--- badi/public_scripts/switchgate/switchgate 2009/12/17 11:55:02 1.4 +++ badi/public_scripts/switchgate/switchgate 2017/03/28 21:44:24 1.8 @@ -1,7 +1,7 @@ #!/bin/bash -# switchhgate 0.0.3 -# (c) 2005 under GPL by Adrian Zaugg +# switchhgate 0.0.5 +# (c) 2005-2010 under GPL by Adrian Zaugg # switchgate pings a set of hosts to determine the state of the internet connectivity. If # the connection is down, it can change the default gateway to an alternative gateway. @@ -59,15 +59,15 @@ function readgwlist { fi allgates=`grep -ve "^[ ]*[\#]\+.*$" "$GATEWAYS_FILE" | xargs` + alldhcpgates="" for gate in $allgates; do - if [[ $(echo "$gate" | grep -c -e "^[:space:]*dhcp\..*$") -eq 1 && \ - -f "$CONFIG_PATH/$gate" ]]; then + if [[ $(echo "$gate" | grep -c -e "^[[:space:]]*dhcp\..*$") -eq 1 && \ + -f "$DHCP_TMP_DIR/$gate" ]]; then # Read dhcp supplied gate for a specific interface - alldhcpgates=`grep -e "^[^\#].*$" "$CONFIG_PATH/$gate" | xargs` - elif [[ $(echo "$gate" | grep -c -e "^[:space:]*dhcp[:space:]*$") -eq 1 ]]; then + alldhcpgates="$alldhcpgates `grep -e "^[^\#].*$" "$DHCP_TMP_DIR/$gate" | xargs`" + elif [[ $(echo "$gate" | grep -c -e "^[[:space:]]*dhcp[[:space:]]*$") -eq 1 ]]; then # Read all dhcp files - alldhcpgates="" - for dhcpfile in $(echo -n $(ls -1 $DHCP_TMP_DIR/dhcp* 2>/dev/null)); do + for dhcpfile in $(echo -n $(ls -1 $DHCP_TMP_DIR/dhcp* 2>/dev/null)); do alldhcpgates="$alldhcpgates `grep -e "^[^\#].*$" "$dhcpfile" | xargs`" done else @@ -353,11 +353,13 @@ fi # send an eMail if the connection is down or limited if [ -z "$UP" ]; then - EMAIL_BODY="Switchgate on $(hostname -f) reports: No connection!\n\nTime:\t\t$(date)\nGateway:\t$CURRENTGW ($CURRENTGW_ID)" - EMAIL_SUBJECT="Attention: $(hostname -f) has no connection!" - echo -e "$EMAIL_BODY" | mail -s "$EMAIL_SUBJECT" "$ALERT_EMAIL" - if [[ -n "$DEBUG" && "$DEBUG" != "low" ]]; then - echo "Alert message sent to $ALERT_EMAIL." + if [ -z "$NEWGW" ]; then + EMAIL_BODY="Switchgate on $(hostname -f) reports: No connection!\n\nTime:\t\t$(date)\nGateway:\t$CURRENTGW ($CURRENTGW_ID)" + EMAIL_SUBJECT="Attention: $(hostname -f) has no connection!" + echo -e "$EMAIL_BODY" | mail -s "$EMAIL_SUBJECT" "$ALERT_EMAIL" + if [[ -n "$DEBUG" && "$DEBUG" != "low" ]]; then + echo "Alert message sent to $ALERT_EMAIL." + fi fi elif [ "$CURRENTGW_ID" != 0 ]; then EMAIL_BODY="Switchgate on $(hostname -f) reports: Not operating on standard default gateway!\n\nTime:\t\t$(date)\nGateway:\t$CURRENTGW ($CURRENTGW_ID)" @@ -368,9 +370,15 @@ elif [ "$CURRENTGW_ID" != 0 ]; then fi fi -if [ "$DEBUG" = "low" ]; then - echo - echo "Default Gateway: $CURRENTGW ($CURRENTGW_ID)" - echo +if [ "$DEBUG" = "low" -o "$DEBUG" = "choke" ]; then + if [ -n "$UP" ]; then + echo + echo "Current Default Gateway: $CURRENTGW ($CURRENTGW_ID)" + echo + else + echo + echo "No connection." + echo + fi fi exit 0