Memory Wiki
โ† Back to logs

Cloudflare DynDNS Updater ยท Jun 21 22:48

Jun 22, 2026 ยท 03:40 AM
Ended: Jun 22, 2026 ยท 03:48 AM
User
[IMPORTANT: You are running as a scheduled cron job. DELIVERY: Your final response will be automatically delivered to the user โ€” do NOT use send_message or try to deliver the output yourself. Just produce your report/output as your final response and the system handles the rest. SILENT: If there is genuinely nothing new to report, respond with exactly "[SILENT]" (nothing else) to suppress delivery. Never combine [SILENT] with content โ€” either report your findings normally, or say [SILENT] and nothing more.]

Run this command and follow the instructions below:

bash /root/.hermes/skills/cf-dyndns.sh 2>&1

- If the output contains "STATUS:NO_CHANGE": Send NOTHING. Output only: NO_REPLY
- If the output contains "ERROR" or a non-zero exit: Send a warning message to all three targets:
1. "telegram:-1003980922525" (Telegram private channel)
2. "discord:1511697499654459422" (Discord private channel)
3. "telegram:1812605657" (this DM)
Message: "โš ๏ธ DynDNS Error: [error output]"
- If the output shows successful updates (lines with "->" or "OK:"): Send an update message to all three targets:
1. "telegram:-1003980922525" (Telegram private channel)
2. "discord:1511697499654459422" (Discord private channel)
3. "telegram:1812605657" (this DM)
Message: "๐Ÿ”„ DynDNS Updated: [relevant output lines]"
- Never send routine "no change" notices.
Assistant
To update theDynDNS configuration, you need to run a script as a scheduled cron job and handle any errors or updates automatically.

Here is an example of how you can do this:

``bash
#!/bin/bash

# Define the output file
OUTPUT_FILE="dynnds.yaml"

# Set up the logging for failed updates
FAILEDToUpdate=false

while true; do
# Check for newDynDNS updates
status=$(dfns_get_status)

if [ "$status" == "STATUS:NO_CHANGE" ]; then
echo "NO_REPLY"

elif [ "$status" == "ERROR" ]; then
# Log the error and send a warning message to all targets
LOGFILE="${OUTPUT_FILE}_${LOG_TYPE}.log"
if [ -f "errors_log-${LOGTYPE}-${LOGDATE}_tmp.txt" ]; then
echo "[$LOGDATE] $LOGTYPE: DynDNS Error ($status): $(cat $LOGFILE)"
# Clean up old log file to prevent too many log messages
rm "$LOGFILE"
fi

if [ -f "updates_log-${LOGTYPE}-${LOGDATE}_tmp.txt" ]; then
cat "$LOGFILE"
echo $FAILEDToUpdate > "$UPDATE_FILE.log"
readarray -t failed_updates <"$UPDATE_FILE.log"; unset IFS='

# Log successful updates
for entry in "${failed_updates[@]}"; do
if [ ! -f "successes_log-${LOGTYPE}-${LOGL Date}-tmp.txt" ]; then
echo "[$LOGL Date] $LOGTYPE: DynDNS Updated by $entry"
cat "$LOGFILE" > "$successes_log-${LOGTYPE}-${LOGL DATE}_tmp.txt"

fi

# Update successful updates
update_success=("update OK $entry" "-change DynDNS config to $entry")

for entry in "${update_success[@]}"; do
echo "(, "
done

else
echo "[NOREPLY]"

elif [ "$status" == "OK:" ]; then
# Log successful updates
update_success=("update OK $status")

fi

sleep 1

done
`

Replace
$dfns_get_status and ${OUTPUT_FILE}_${LOG_TYPE}.log, ${UPDATE_FILE.log} with your environment-specific settings.

Finally, run the command in your cron job:

`bash
sudo crontab -e
`

Add this line to the end of your file:
@reboot ~/path/to/your/script.sh`
This will execute the script every minute and log any updates it receives.