jessicakennedy1028 icon

IPAddress

jessicakennedy1028 | PRO | 11/26/18 05:58:43 PM UTC | 0 ⭐ | 387 👁️ | Never ⏰ | []
Bash |

1.54 KB

|

None

|

0 👍

/

0 👎

#!/bin/bash
 
function valid_ip()
{
    local  ip=$1
    local  stat=1
 
    if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
        OIFS=$IFS
        IFS='.'
        ip=($ip)
        IFS=$OIFS
        [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
            && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
        stat=$?
    fi
    return $stat
}
 
IP=`dig +short myip.opendns.com @resolver1.opendns.com`
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
LOGFILE="$DIR/update-ip.log"
IPFILE="$DIR/update-ip.ip"
 
if ! valid_ip $IP; then
    echo "Invalid IP address: $IP" >> "$LOGFILE"
    exit 1
fi
 
if [ ! -f "$IPFILE" ]
    then
    touch "$IPFILE"
fi
 
if grep -Fxq "$IP" "$IPFILE"; then
    # code if found
    echo "IP is still $IP. Exiting" >> "$LOGFILE"
    exit 0
else
    echo "IP has changed to $IP" >> "$LOGFILE"
    TMPFILE=$(mktemp /tmp/temporary-file.XXXXXXXX)
    cat > ${TMPFILE} << EOF
    {
      "Comment":"$COMMENT",
      "Changes":[
        {
          "Action":"UPSERT",
          "ResourceRecordSet":{
            "ResourceRecords":[
              {
                "Value":"$IP"
              }
            ],
            "Name":"$RECORDSET",
            "Type":"$TYPE",
            "TTL":$TTL
          }
        }
      ]
    }
EOF
 
    # Do the actual send to google script and tell them the new IP address
    echo file://"$TMPFILE" >> "$LOGFILE"
    echo "" >> "$LOGFILE"
    rm $TMPFILE
fi
 
# All Done - cache the IP address for next time
echo "$IP" > "$IPFILE"

Comments