diff --git a/ipupdater b/ipupdater new file mode 100644 index 0000000..b86c20e --- /dev/null +++ b/ipupdater @@ -0,0 +1,45 @@ +#!/bin/bash + +homeip=/home/jaileduser/nginx/homeip +recordip=/home/jaileduser/nginx/recordip +#define where you want the bashddns log to live +bashddnslog=/var/log/bashddns.log + +changetime() { + +local newip=$(cat "$homeip") + +#here i use @ because i want to update the root of my domain and a TTL of 3600 (standard for A records) +pdnsutil replace-rrset yourdomain.name @ A 3600 "$newip" + +#increasing the serial number in the SOA so the slave nameserver is notified of changes to the domain +pdnsutil increase-serial yourdomain.name + +#updating the record ip file with the new ip +cat "$homeip" > "$recordip" + +#the following last line is optional +#it uses ssmtp to send an email notification when changes to the A record are made +#ssmtp or any other command line compatible mail sending utility will work + +echo -e "Subject: domain.name updated A record\nYour home ip has changed!" | ssmtp mail@site.name + +} + +#though we made sure on the nginx server not to send the file if it was empty +#we will implement a double check here for redundancy +#only run the following *if* homeip is not empty + +if ! [ -z "$(cat "$homeip")" ] ; then + +#if homeip/recordip files are the same do nothing, else run changetime +#log all actions to a centralized file for auditing + +diff "$homeip" "$recordip" && \ +echo "A record matches homeip at $(date -u) no action taken" >> "$bashddnslog" \ +&& exit 0 \ +|| changetime && echo "changed A record at $(date -u) to "$(cat "$recordip")"" >> "$bashddnslog" + +else +echo "no action taken due to homeip file being empty at $(date -u)" >> "$bashddnslog" +fi \ No newline at end of file