Difference between revisions of "Dyndns Updater"
Jump to navigation
Jump to search
Rafahsolis (talk | contribs) m Tag: visualeditor |
Rafahsolis (talk | contribs) m Tag: visualeditor |
||
| Line 12: | Line 12: | ||
# Your DuckDNS token | # Your DuckDNS token | ||
| − | TOKEN=" | + | TOKEN="********-****-****-****-************" |
# List of your DuckDNS subdomains | # List of your DuckDNS subdomains | ||
| − | DOMAINS=(" | + | DOMAINS=("r0942" "zr0ke" "labelbosque") |
# Optional: IP address to set (leave empty to use external IP) | # Optional: IP address to set (leave empty to use external IP) | ||
| Line 21: | Line 21: | ||
# Log file | # Log file | ||
| − | LOGFILE="$HOME/ | + | LOGFILE="$HOME/duckdns/update.log" |
| − | |||
log() { | log() { | ||
local message="$1" | local message="$1" | ||
| Line 31: | Line 30: | ||
} | } | ||
| − | |||
for DOMAIN in "${DOMAINS[@]}"; do | for DOMAIN in "${DOMAINS[@]}"; do | ||
| + | if [ -z "$DOMAIN" ]; then | ||
| + | log "Skipped empty domain entry" | ||
| + | continue | ||
| + | fi | ||
| + | |||
URL="https://www.duckdns.org/update?domains=${DOMAIN}&token=${TOKEN}&ip=${IP}" | URL="https://www.duckdns.org/update?domains=${DOMAIN}&token=${TOKEN}&ip=${IP}" | ||
| − | RESPONSE=$(curl -s "$URL") | + | RESPONSE=$(curl -s --fail "$URL") || RESPONSE="curl_error" |
if [ "$RESPONSE" == "OK" ]; then | if [ "$RESPONSE" == "OK" ]; then | ||
| Line 42: | Line 45: | ||
fi | fi | ||
done | done | ||
| + | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 55: | Line 59: | ||
==/etc/ddclient.conf example== | ==/etc/ddclient.conf example== | ||
<nowiki>## ddclient configuration file | <nowiki>## ddclient configuration file | ||
| − | + | daemon=600 | |
| − | + | # check every 600 seconds | |
| − | + | syslog=yes | |
| − | + | # log update msgs to syslog | |
| − | + | mail-failure=redteam@bbva.com # Mail failed updates to user | |
| − | + | pid=/var/run/ddclient.pid | |
| − | + | # record PID in file. | |
| − | + | ssl=yes | |
| − | + | # use HTTPS | |
| − | + | ## Detect IP with our CheckIP server | |
| − | + | use=web, web=checkip.dyndns.com/, web-skip='IP Address' | |
| − | + | ## DynDNS username and password here | |
| − | + | login=RedTeam | |
| − | + | password=##YOUR PASSWORD## | |
| − | + | ## Default options | |
| − | + | protocol=dyndns2 | |
| − | + | server=members.dyndns.org | |
| − | + | ## Dynamic DNS hosts | |
| − | + | rrafara.dyndns.org</nowiki> | |
Restart ddclient service | Restart ddclient service | ||
Latest revision as of 12:32, 4 November 2025
Duck DNS[edit]
- Create an account at https://www.duckdns.org/
- Create the script /var/local/duckdns/updater.sh (chmod 700)
- create the log file: touch /var/local/duckdns/duck.log
LOG_FILE=/var/local/duckdns/duck.log
DATE=$(date +"%F %T")
RESULT=$( echo url="https://www.duckdns.org/update?domains=flirt,zr0ke,r0942,m0rpheus&token=********-****-****-****-************&ip=" | curl -s -k -K - )
echo ${DATE} ${RESULT} >> ${LOG_FILE}
improved script
#!/bin/bash
# Your DuckDNS token
TOKEN="********-****-****-****-************"
# List of your DuckDNS subdomains
DOMAINS=("r0942" "zr0ke" "labelbosque")
# Optional: IP address to set (leave empty to use external IP)
IP=""
# Log file
LOGFILE="$HOME/duckdns/update.log"
log() {
local message="$1"
local timestamp
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "$timestamp - $message" >> "$LOGFILE"
}
for DOMAIN in "${DOMAINS[@]}"; do
if [ -z "$DOMAIN" ]; then
log "Skipped empty domain entry"
continue
fi
URL="https://www.duckdns.org/update?domains=${DOMAIN}&token=${TOKEN}&ip=${IP}"
RESPONSE=$(curl -s --fail "$URL") || RESPONSE="curl_error"
if [ "$RESPONSE" == "OK" ]; then
log "Updated $DOMAIN successfully"
else
log "Failed to update $DOMAIN: $RESPONSE"
fi
done
- crontab -e
*/5 * * * * /var/local/duckdns/updater.sh >/dev/null 2>&1
NO-IP[edit]
Ubuntu 16.04 server[edit]
sudo apt install ddclient
/etc/ddclient.conf example[edit]
## ddclient configuration file
daemon=600
# check every 600 seconds
syslog=yes
# log update msgs to syslog
mail-failure=redteam@bbva.com # Mail failed updates to user
pid=/var/run/ddclient.pid
# record PID in file.
ssl=yes
# use HTTPS
## Detect IP with our CheckIP server
use=web, web=checkip.dyndns.com/, web-skip='IP Address'
## DynDNS username and password here
login=RedTeam
password=##YOUR PASSWORD##
## Default options
protocol=dyndns2
server=members.dyndns.org
## Dynamic DNS hosts
rrafara.dyndns.org
Restart ddclient service