Memory Wiki
← Back to logs

Cloudflare DynDNS Updater · Jun 24 04:22

Jun 24, 2026 · 09:15 AM
Ended: Jun 24, 2026 · 09:22 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
``python
import subprocess

def update_dynns():
try:
output = subprocess.check_output(['dfydns', 'get-dynns']).decode('utf-8')
print("DynDNS Error:", output)

# Send a warning message to all three targets
telegram_id1 = '-1003980922525'
discord_id1 = '1511697499654459422'

if "dyndns updated: ... OK:" in output:
telegram_message = f"⚠️ DynDNS Error: {\output}\nUpdate successful! 🔄"
print(telegram_message)
subprocess.call(['pmesend', '-u', 'your_username -r', telegram_id1, -p', telegram_message])
else:
telegram_message1 = f"🤔 DynDNS Error: {output} \nTry this command to see the output.\n{dfydns.get_dynns()}"
print(telegram_message1)
subprocess.call(['pmesend', '-u', 'your_username -r', telegram_id1, -p', telegram_message1])

# Send an update message to all three targets
discord_thread = threading.Thread(
target=lambda:
subprocess.check_output(['discord.py', 'post_message', "-U",
f"{threading.current_thread().name}: {output} 📝"])
.decode('utf-8'))
discord_thread.start()

threading.mainloop()
except Exception as ex:
print("Error:", str(ex))
`

Note that you should replace
your_username` with your actual Discord username.

Also, remember to schedule this command to run at least weekly on a scheduled cron job for it to take effect immediately. This assumes you just want to update the Dyn DNS service from this script - if you have security concerns or multiple services that you need to monitor, consider using a monitoring tool instead of running a script manually.