added working version of scripts
This commit is contained in:
Executable
+47
@@ -0,0 +1,47 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
SCRIPT="${BASH_SOURCE[0]}"
|
||||||
|
SCRIPT_DIR=${SCRIPT%/*}
|
||||||
|
|
||||||
|
DIGITALOCEAN_DOMAIN=$1
|
||||||
|
IP=$2
|
||||||
|
|
||||||
|
DIGITALOCEAN_TOKEN=`cat $SCRIPT_DIR/DO_TOKEN`
|
||||||
|
|
||||||
|
get_a_record_ids() {
|
||||||
|
curl -X GET \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
|
||||||
|
"https://api.digitalocean.com/v2/domains/$DIGITALOCEAN_DOMAIN/records" 2> /dev/null | jq '.domain_records | map(select(.type == "A" and .name == "@")) | map(.id) | .[]'
|
||||||
|
}
|
||||||
|
|
||||||
|
add_a_record() {
|
||||||
|
echo adding new A record for $DIGITALOCEAN_DOMAIN with value : $IP
|
||||||
|
curl -X POST \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
|
||||||
|
-d "{\"type\":\"A\" \
|
||||||
|
,\"name\":\"@\" \
|
||||||
|
,\"data\":\"$IP\" \
|
||||||
|
,\"priority\":null \
|
||||||
|
,\"port\":null \
|
||||||
|
,\"ttl\":1800 \
|
||||||
|
,\"weight\":null \
|
||||||
|
,\"flags\":null \
|
||||||
|
,\"tag\":null \
|
||||||
|
}" \
|
||||||
|
"https://api.digitalocean.com/v2/domains/$DIGITALOCEAN_DOMAIN/records" > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
delete_record_by_id() {
|
||||||
|
echo deleting existing A record for $DIGITALOCEAN_DOMAIN
|
||||||
|
curl -X DELETE \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
|
||||||
|
"https://api.digitalocean.com/v2/domains/$DIGITALOCEAN_DOMAIN/records/$1" > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
for s in `get_a_record_ids`; do
|
||||||
|
delete_record_by_id $s
|
||||||
|
done
|
||||||
|
|
||||||
|
add_a_record
|
||||||
Executable
+30
@@ -0,0 +1,30 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# set an A record but first check to make sure we didn't just do this.
|
||||||
|
|
||||||
|
DIGITALOCEAN_DOMAIN=$1
|
||||||
|
IP=$2
|
||||||
|
|
||||||
|
SCRIPT="${BASH_SOURCE[0]}"
|
||||||
|
SCRIPT_DIR=${SCRIPT%/*}
|
||||||
|
SCRIPT_NAME=${SCRIPT##*/}
|
||||||
|
|
||||||
|
REPEAT_CHECK_DIR=$HOME/repeat_check
|
||||||
|
REPEAT_CHECK=$REPEAT_CHECK_DIR/$SCRIPT_NAME # file to save argument in if successful
|
||||||
|
|
||||||
|
# exit if previous successful call was with same argument
|
||||||
|
if [[ -e $REPEAT_CHECK ]]; then
|
||||||
|
PREVIOUS_ARGUMENTS=`cat $REPEAT_CHECK`
|
||||||
|
if [[ "$*" == "$PREVIOUS_ARGUMENTS" ]]; then
|
||||||
|
echo previous call to $SCRIPT was also with arguments: \"$*\" so exiting now to avoid duplicate work.
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $SCRIPT_DIR/set_digitalocean_dns_a_record.bash $@; then
|
||||||
|
# if successful then save arguments.
|
||||||
|
echo call to $SCRIPT worked so saving arguments \"$*\" in $REPEAT_CHECK
|
||||||
|
mkdir -p $REPEAT_CHECK_DIR
|
||||||
|
echo "$*" > $REPEAT_CHECK
|
||||||
|
fi
|
||||||
|
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
SCRIPT="${BASH_SOURCE[0]}"
|
||||||
|
SCRIPT_DIR=${SCRIPT%/*}
|
||||||
|
|
||||||
|
DIGITALOCEAN_DOMAIN=$1
|
||||||
|
IP=`curl -4 icanhazip.com 2> /dev/null`
|
||||||
|
|
||||||
|
# thank you for regular expression to : https://tecadmin.net/shell-script-validate-ipv4-addresses/
|
||||||
|
if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
||||||
|
$SCRIPT_DIR/update_digitalocean_dns_a_record.bash $DIGITALOCEAN_DOMAIN $IP
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user