cloudfare ddns 更新范本

代码

#!/bin/bash

API_TOKEN="content of API_TOKEN"
ZONE_ID="content of ZONE_ID"
RECORD_ID="content of RECORD_ID"
RECORD_NAME=" content of RECORD_NAME"
 


# Get current public IP
CURRENT_IP=$(curl -s https://api.ipify.org)

# Get the current DNS record IP from Cloudflare
OLD_IP=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
     -H "Authorization: Bearer $API_TOKEN" \
     -H "Content-Type: application/json" \
     | jq -r '.result.content')

# Check if IP has changed
if [ "$CURRENT_IP" != "$OLD_IP" ]; then
    # Update DNS record with new IP
    RESULT=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
         -H "Authorization: Bearer $API_TOKEN" \
         -H "Content-Type: application/json" \
         --data '{"type":"A","name":"'"$RECORD_NAME"'","content":"'"$CURRENT_IP"'","ttl":1,"proxied":false}')

    # Check if update was successful
    if [ "$(echo "$RESULT" | jq -r '.success')" = "true" ]; then
        echo "DNS record updated successfully."
        now points to $CURRENT_IP"
    else
        echo "Error updating DNS record:"
        echo "$RESULT"
        
    fi
fi

服务
/etc/systemd/system/cloudflare-ddns.service

[Unit]
Description=Cloudflare Dynamic DNS Update
After=network-online.target
Wants=cloudflare-ddns.timer

[Service]
User=root
Type=oneshot
ExecStart=/usr/local/bin/cloudflare_ddns.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
保活
/etc/systemd/system/cloudflare-ddns.timer
[Unit]
Description=Run cloudflare-ddns every 5 minutes

[Timer]
OnBootSec=1m
OnUnitActiveSec=5m

[Install]
WantedBy=timers.target

PDQ inventory and PDQ Deploy license

PDQ Deploy license for 19.3.470

--- START LICENSE ---
PExpY2Vuc2UgVmVyc2lvbj0iMi4wIiBJRD0iMzk5
ODkxZTYtZjYyMS00MDVkLWFlZDctMmZiZTk4MjMw
NzQ5IiBDdXN0b21lcklEPSJkNmU5NWE5ZC00YTVi
LTRjNTctOTQ0Yi1lNjZjM2YxNzI3NDIiIE5hbWU9
IlBEUSBEZXBsb3kiIENvZGU9IlBEUURlcGxveSIg
Q291bnQ9IjY1MDAwIiBNb2RlPSJFbnRlcnByaXNl
IiBUeXBlPSJGdWxsIiBFLU1haWw9ImRldkBib2Fy
ZDRhbGwuYml6IiBFeHBpcmVzPSIyMDk5LTEyLTMx
IiBTaWduYXR1cmU9InBWZzR6eSt6WWtQUU1EcGNC
cWhuelVZenpNSng1alQwcW5jMFhSTjU1TDZTTEFT
YUpaakFwdnFid3ducmJXZUtuMFV0WXZXUC9OUC83
SFZwM1IrZGFIOG5uQ2l3dG5RMjA0eFJ1c3JmVmpM
Qi9QQnFFTjZuWEg3KzlQbnppVTIwRzA3dTdVT1N2
b1BDVERDd3VUUkx6MjFPUzBLKzM2Z2ZFRW1lWlkz
dlo4Zz0iIC8+
--- END LICENSE ---

PDQ inventory license for 19.3.446

--- START LICENSE ---
PExpY2Vuc2UgVmVyc2lvbj0iMi4wIiBJRD0iYjc1
Y2QxZWItOTU4Mi00OGFlLWE0MjMtYjVlZmY2ZTRj
NmM5IiBDdXN0b21lcklEPSJkNGU4ODA3Yy0xNzBj
LTQ4OWEtYjI5Zi0yOGJhYTY5ZDRiYTAiIE5hbWU9
IlBEUSBJbnZlbnRvcnkiIENvZGU9IlBEUUludmVu
dG9yeSIgQ291bnQ9IjY1MDAwIiBNb2RlPSJFbnRl
cnByaXNlIiBUeXBlPSJGdWxsIiBFLU1haWw9ImRl
dkBib2FyZDRhbGwuYml6IiBFeHBpcmVzPSIyMDk5
LTEyLTMxIiBTaWduYXR1cmU9IkZLK2hZZVd6T2VI
ejIvWmk0T3JwbnVIckdZWmVyUURpWkdjYUYvZEV2
SXNrOGFMRHdFY0V0ZVlWbWNIR29udkxtblFNWWl3
SUcwZlNNYUpVNm1KM0xmY05qRVFXMHViTnJobFY0
ZVJ4bEEzd3oyK3JYK3VaMGhldm1hTzdVeUwwL2V1
UU0wZVpybzhyMGVnVkpaVm51dndhMFBkNkRvRUhS
MWdEQjRDYnV6UT0iIC8+
--- END LICENSE ---