76 lines
1.7 KiB
Bash
Executable File
76 lines
1.7 KiB
Bash
Executable File
#! /bin/bash
|
|
|
|
PASSWORD=""
|
|
DOMAIN=""
|
|
|
|
usage(){
|
|
cat << EOF
|
|
usage: update-ipv6 [OPTIONS] -p [PASSWORD] -d [DOMAIN_NAME]
|
|
Dynamic DNS script helper that updates records in freedns.afraid.org if the IPV6 address has been changed.
|
|
|
|
Options:
|
|
-f Force update in record even if IP hasn't change
|
|
--dry Shows if the IP addres has changed without updating it
|
|
|
|
EOF
|
|
exit 1
|
|
|
|
}
|
|
|
|
if [[ $# -lt 4 ]] ;
|
|
then
|
|
usage
|
|
fi
|
|
|
|
for option in $@; do
|
|
case $option in
|
|
-p)
|
|
PASSWORD=$2
|
|
shift 2;;
|
|
-d)
|
|
DOMAIN=$2
|
|
shift 2;;
|
|
-f)
|
|
FORCE=true;;
|
|
--dry)
|
|
DRY=true;;
|
|
*)
|
|
usage;;
|
|
esac
|
|
done
|
|
|
|
echo pass $PASSWORD domain $DOMAIN force $FORCE dry $DRY
|
|
exit 0
|
|
|
|
echo $address
|
|
if [[ $DRY ]]; then
|
|
exit 1;
|
|
fi
|
|
|
|
addresses=$(/usr/sbin/ifconfig eth0 | grep 'inet6.*global>' | awk '{ print $2 }');
|
|
GREAT=0
|
|
add=""
|
|
for address in $addresses;
|
|
do
|
|
secs=$(/usr/sbin/ip addr show dev eth0 | grep -A1 $address | grep -v $address | awk '{ print $2}')
|
|
if [ $GREAT -gt ${secs/sec/} ] || [ $GREAT == 0 ];
|
|
then
|
|
GREAT=${secs/sec/}
|
|
add=$address
|
|
fi
|
|
|
|
done
|
|
if [[ $add ]] && [[ -z $(grep $add /etc/haproxy/haproxy.cfg ) ]] ; then
|
|
hadd=$(cat /etc/haproxy/haproxy.cfg | grep -m 1 'bind.*ssl' | awk '{ print $2 }');
|
|
sed -i s/${hadd::-4}/$add/ /etc/haproxy/haproxy.cfg
|
|
date
|
|
echo curl --user "nextia365:$PASSWORD" -XPOST http://freedns.afraid.org/nic/update?hostname=$DOMAIN\&myip=$add
|
|
curl --user "nextia365:$PASSWORD" -XPOST http://freedns.afraid.org/nic/update?hostname=$DOMAIN\&myip=$add
|
|
systemctl restart haproxy
|
|
else
|
|
echo Unchanged
|
|
if [[ $FORCE ]]; then
|
|
curl --user "nextia365:$PASSWORD" -XPOST http://freedns.afraid.org/nic/update?hostname=$DOMAIN\&myip=$add
|
|
fi
|
|
fi
|