56 lines
2.2 KiB
Bash
56 lines
2.2 KiB
Bash
#!/usr/bin/env nix-shell
|
|
#! nix-shell -i bash -p bash curl jq dig
|
|
|
|
# Shell script to update namecheap.com dynamic dns
|
|
# for a domain to your external IP address
|
|
|
|
# namecheap
|
|
hostnames=(cloud @ 6fxAtnPxEeI8hN)
|
|
domain=rotehaare.art
|
|
password=60d672be5d9d4828a0f96264babe0ac1
|
|
|
|
ip=$(curl -s ipecho.net/plain)
|
|
for hostname in "${hostnames[@]}"; do
|
|
curl "https://dynamicdns.park-your-domain.com/update?host=$hostname&domain=$domain&password=$password&ip=$ip"
|
|
done
|
|
|
|
# cloudflare
|
|
zone_id=833996ed25eb09f1a50606e0457790e4
|
|
record=servidos.lat
|
|
record_id=6b117173e53a7511ba36ceb9637ede63
|
|
cloudflare_token=VdKosfThQmOcuywLOUq9DY4-df9EmbHrDWyf_vUb
|
|
|
|
# get record_id
|
|
# curl -s -X GET "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records?type=A&name=${record}" \
|
|
# -H "Authorization: Bearer ${cloudflare_token}" \
|
|
# -H "Content-Type: application/json" | jq -r '{"result"}[] | .[0] | .id'
|
|
|
|
curr_ip=$(curl -s -X GET https://checkip.amazonaws.com)
|
|
curr_reg=$(dig ${record} +short @1.1.1.1)
|
|
if echo "${curr_reg}" | grep "${curr_ip}"; then
|
|
echo "$(date --rfc-3339=seconds) - OK - Current record matches current IP (${curr_ip})"
|
|
else
|
|
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${record_id}" \
|
|
-H "Authorization: Bearer ${cloudflare_token}" \
|
|
-H "Content-Type: application/json" \
|
|
--data "{\"type\":\"A\",\"name\":\"${record}\",\"content\":\"$curr_ip\",\"ttl\":1,\"proxied\":false}" >/dev/null
|
|
echo "$(date --rfc-3339=seconds) - NOK - Record Updated to $curr_ip from ${curr_reg}"
|
|
fi
|
|
|
|
# godaddy
|
|
domain=danilo-reyes.com
|
|
host=@
|
|
APIKey=AEjhf24Sczj_BpoXZmSK1Zha3pvRpRYxnf
|
|
APISecret=5pumrt9iMaSxR8U4PjhRCE
|
|
|
|
WanIP=$(curl -s "https://api.ipify.org")
|
|
GDIP=$(curl -s -X GET -H "Authorization: sso-key ${APIKey}:${APISecret}" "https://api.godaddy.com/v1/domains/${domain}/records/A/${host}" | cut -d'[' -f 2 | cut -d']' -f 1)
|
|
|
|
if [ "$WanIP" != "$GDIP" ] && [ "$WanIP" != "" ]; then
|
|
echo "Actualizando ip godaddy"
|
|
curl -s -X PUT "https://api.godaddy.com/v1/domains/${domain}/records/A/${host}" \
|
|
-H "Authorization: sso-key ${APIKey}:${APISecret}" \
|
|
-H "Content-Type: application/json" \
|
|
-d "[{\"data\": \"${WanIP}\"}]"
|
|
fi
|