Skip to content

Instantly share code, notes, and snippets.

@pacmac
Created November 5, 2022 01:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pacmac/92bd0f5c57733ebdbecc385b754e111a to your computer and use it in GitHub Desktop.
Save pacmac/92bd0f5c57733ebdbecc385b754e111a to your computer and use it in GitHub Desktop.
Add Dynamic DNS records to UFW
#!/bin/bash
HOSTNAME="$1"
LOGDIR="$HOME/.ufw";
LOGFILE=$LOGDIR/$HOSTNAME
if [ ! -d "$LOGDIR" ];then
mkdir $LOGDIR
fi
function _alert {
echo "[$HOSTNAME] OLD:$OIP NEW:$CIP $1";
ufw status | grep $CIP
exit 0;
}
#### MAIN-FUNC #####
CIP=$(dig +short +nocomments $HOSTNAME | tail -1)
ISBLOCK="$(ufw status | grep "REJECT" | grep $CIP)"
if [ ! -f $LOGFILE ]; then
/usr/sbin/ufw insert 1 allow from $CIP
echo -n $CIP > $LOGFILE
else
OIP=$(cat $LOGFILE)
if [ "$ISBLOCK" ];then
echo "$CIP is Blocked. Allowing now..."
/usr/sbin/ufw delete reject from $CIP
/usr/sbin/ufw insert 1 allow from $CIP
elif [ "$CIP" = "$OIP" ] ; then
_alert "no change."
else
/usr/sbin/ufw delete allow from $OIP
/usr/sbin/ufw insert 1 allow from $CIP
echo -n $CIP > $LOGFILE
_alert "updated."
fi
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment