sysadmin/dyndns.sh

58 lines
1.3 KiB
Bash
Executable File

#/bin/sh
##########
# CONFIG #
##########
if [ -f dyndns.env ]
then
export $(cat dyndns.env | sed 's/#.*//g' | xargs)
else
echo "Error, dyndns.env doesn't exist"
exit 1
fi
if [ -z "$HOST" ] || [ -z "$LOGIN" ] || [ -z "$PASSWORD" ] || [ -z "$PATH_LOG" ]
then
echo "Error, please check your configuration in dyndns.env"
exit 2
fi
###########
# GET IPs #
###########
HOST_IP=`dig A +short $HOST`
# Flag 4 stand for IPv4
CURRENT_IP=`curl -s4 ifconfig.io`
#######
# LOG #
#######
echo "====================================" >> $PATH_LOG
echo "Run dyndns - "$(date +"%D, %T") >> $PATH_LOG
echo "Domain : $HOST" >> $PATH_LOG
echo "Current IP : $CURRENT_IP" >> $PATH_LOG
echo "Host IP : $HOST_IP" >> $PATH_LOG
###############
# DO THE WORK #
###############
if [ -z "$CURRENT_IP" -o -z "$HOST_IP" ]
then
echo "No IP retrieved" >> $PATH_LOG
else
if [ "$HOST_IP" != "$CURRENT_IP" ]
then
echo "IP has changed" >> $PATH_LOG
RES=`curl -s --user "$LOGIN:$PASSWORD" "http://www.ovh.com/nic/update?system=dyndns&hostname=$HOST&myip=$CURRENT_IP"`
echo "Result request dynHost" >> $PATH_LOG
echo "$RES" >> $PATH_LOG
echo "IP changed for $HOST, new IP is $CURRENT_IP"
else
echo "IP has not changed" >> $PATH_LOG
fi
fi