uploaded file
parent
fe3bcc260e
commit
391ad5aa0f
|
@ -0,0 +1,62 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# CONFIGURATION
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# check every TIMEOUT seconds (default 300 = 5 min)
|
||||||
|
TIMEOUT=300
|
||||||
|
# user credentials
|
||||||
|
USERNAME="ur goip username"
|
||||||
|
PASSWORD="ur goip password"
|
||||||
|
DOMAIN="urdomain.goip.it"
|
||||||
|
# Discord webhook
|
||||||
|
DISCORD_WEBHOOK_URL="" # leave empty to disable
|
||||||
|
DISCORD_WEBHOOK_MESSAGE_UPDATE="DNS entry for $DOMAIN has been updated successfully."
|
||||||
|
DISCORD_WEBHOOK_MESSAGE_FAIL="DNS entry update for $DOMAIN failed."
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# END OF CONFIGURATION
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
function discord_update_message {
|
||||||
|
if [ -n $DISCORD_WEBHOOK_URL ]; then
|
||||||
|
local MESSAGE='{"username": "DNS Record Updater", "content": "'"$1"'"}'
|
||||||
|
echo $MESSAGE
|
||||||
|
wget -qO - --post-data="$MESSAGE" --header='Content-Type:application/json' "$DISCORD_WEBHOOK_URL"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_ip {
|
||||||
|
# get a string in format 'ip=x.x.x.x' by splitting out a json over multiple lines and removing characters
|
||||||
|
local IP=$(wget -4qO - "https://api.myip.com" | sed 's/[\{\}]//g;s/,/\n/g' | sed -n 's/"//g;s/:/=/g;/ip/p')
|
||||||
|
if [ -z $IP ]; then
|
||||||
|
echo "Getting my own IP failed." >&2
|
||||||
|
echo "ip=0.0.0.0"
|
||||||
|
else
|
||||||
|
echo $IP
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_ip {
|
||||||
|
wget -qO - "https://goip.it/setip?username=$USERNAME&password=$PASSWORD&subdomain=$DOMAIN&$1"
|
||||||
|
local EXIT_CODE="$?"
|
||||||
|
echo "" # add newline after wget output
|
||||||
|
if [ $EXIT_CODE -ne 0 ]; then
|
||||||
|
echo "Setting a new IP using wget failed with exit code $EXIT_CODE." >&2
|
||||||
|
discord_update_message "$DISCORD_WEBHOOK_MESSAGE_FAIL"
|
||||||
|
else
|
||||||
|
discord_update_message "$DISCORD_WEBHOOK_MESSAGE_UPDATE"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
IP="ip=0.0.0.0"
|
||||||
|
while true; do
|
||||||
|
NEW_IP=$(get_ip)
|
||||||
|
if [ $IP != $NEW_IP ]; then
|
||||||
|
echo -e "IP has changed. New IP:\n$NEW_IP"
|
||||||
|
IP="$NEW_IP"
|
||||||
|
set_ip "$IP"
|
||||||
|
fi
|
||||||
|
sleep $TIMEOUT
|
||||||
|
done
|
Loading…
Reference in New Issue