Add ipupdater
This commit is contained in:
45
ipupdater
Normal file
45
ipupdater
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user