Skip to content

Instantly share code, notes, and snippets.

@jcaesar
Created February 23, 2021 06:52
Show Gist options
  • Select an option

  • Save jcaesar/a216159451e5fa393b4fc5ffaaee6352 to your computer and use it in GitHub Desktop.

Select an option

Save jcaesar/a216159451e5fa393b4fc5ffaaee6352 to your computer and use it in GitHub Desktop.
dumb dyndns
#!/usr/bin/env bash
# Script to update DNS zones on a remote server
# Copyright © 2005-2007 - Julien Valroff <[email protected]>
# Parts of the script Copyright © 2001-2002 - Dag Wieers <[email protected]>
set -e -u
set -o pipefail
trap 'echo "ERROR: $BASH_SOURCE:$LINENO $BASH_COMMAND" >&2' ERR
RECORD="$1"
KEY="/hardcoded/path/to/key" # I suppose I should start setting those in /etc/conf.d/...
NAME="cameo.liftm.de"
if [ "$RECORD" = "." ]; then
RECORD="$NAME"
elif grep -qE '\.$' <<<"$RECORD"; then
NAME="$(sed -nr 's/^(.*\.)?([^.]*\.liftm\.de)\./\2/p' <<<"$RECORD")"
else
RECORD="$RECORD.$NAME."
fi
SERVER="liftm.de"
TYPE="$2"
if [ -z ${3+x} ]; then
UPD=""
else
VAL="$3"
UPD="update add $RECORD 901 $TYPE $VAL"
fi
cat <<EOF | nsupdate -k "$KEY" >/dev/null
server $SERVER
zone $NAME
update delete $RECORD $TYPE
$UPD
show
send
EOF
RC=$?
if [ $RC != 0 ]; then
echo "Updating $RECORD to $VAL on $SERVER failed (RC=$RC)"
elif [ -z ${VAL+x} ];then
echo "SUCCESS: Deleting $RECORD from $SERVER succeeded"
else
echo "SUCCESS: Updating $RECORD to $VAL on $SERVER succeeded"
fi
exit $RC
#!/usr/bin/env bash
set -euo pipefail
trap 'echo "ERROR: $BASH_SOURCE:$LINENO $BASH_COMMAND" >&2' ERR
if ! [ -z ${DEBUG+x} ]; then
set -x
fi
for d in cameo cloud; do
f=$d.liftm.de.
#IPADDR=$(ip route get 1.1.1.1 | sed -nr 's/^.*src ([.0-9]*).*$/\1/p')
IPADDR=$(http -F --ignore-stdin api.ipify.org | tail -n1 | sed 's/[^0-9.]//g')
DIG=$(dig +short -tA $f 2>/dev/null)
if [ "$DIG" == "$IPADDR" ]; then
echo "$(LANG=C date +'%b %e %X') No DDNS update needed for $f"
else
echo "$(LANG=C date +'%b %e %X') dnsupdate: . A $IPADDR"
dnsupdate.sh $f A "$IPADDR"
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment