|
发表于 2012-3-24 10:30:02
|
显示全部楼层
这是5.X的DDNS脚本- /system script
- add name=HomingBeacon policy=\
- ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \
- source="# HomingBeacon Main Dynamic DNS Update Script\r\
- \n# Written by Sam Norris, ChangeIP.com\r\
- \n# 20100728 Tested on RouterOS 4.9\r\
- \n# 20110511 Tested on RouterOS 5.2\r\
- \n\r\
- \n# Set your specific ChangeIP.com preferences here.\r\
- \n:global ddnsuser "USERID"\r\
- \n:global ddnspass "PASSWORD"\r\
- \n:global ddnshost "HOSTNAME.changeip.net"\r\
- \n# Change ddnsport to 8245 to bypass proxy.\r\
- \n:local ddnsport 80\r\
- \n\r\
- \n# Do not edit anything below this line. You have been warned.\r\
- \n# Abusive updates to the system will cause firewall blocks.\r\
- \n\r\
- \n# Please be considerate and\r\
- \n# do not let this script run more than once per 3-5 minutes.\r\
- \n\r\
- \n:log info "DDNS: Starting."\r\
- \n\r\
- \n# Initialize checkpoint\r\
- \n:global ddnscheckpoint\r\
- \n:if ([:typeof \$ddnscheckpoint] = "time") do={\r\
- \n\t:log info ("DDNS: Last check was " . ([/system clock get time] - \$d\
- dnscheckpoint))\r\
- \n} else={\r\
- \n\t:log info "DDNS: Cannot determine checkpoint, set now."\r\
- \n\t:global ddnscheckpoint ( [/system clock get time] - 1d )\r\
- \n}\r\
- \n\r\
- \n# Get the current IP\r\
- \n:if ([/system clock get time] - \$ddnscheckpoint > [:totime 180s] || [/s\
- ystem clock get time] - \$ddnscheckpoint < [:totime 0s]) do={\r\
- \n :log info "DDNS: Performing remote IP detection."\r\
- \n /tool fetch address="ip.changeip.com" host="ip.changeip.com" src-\
- path=("/\?" . [/int eth get 0 mac-address ]) dst-path="ip.changeip.com.\
- txt" mode=http port=\$ddnsport\r\
- \n :global ddnscheckpoint [/system clock get time]\r\
- \n} else={\r\
- \n :log info "DDNS: Please be considerate and wait a few seconds longer\
- ."\r\
- \n :break\r\
- \n}\r\
- \n\r\
- \n# Parse the IP address received from fetch script.\r\
- \n\t:global ddnslastip\r\
- \n\t:local html [/file get "ip.changeip.com.txt" contents]\r\
- \n\t:local ddnsip [:pick \$html ([:find \$html "<!--IPADDR="] + 11) [:fi\
- nd \$html "-->"] ]\r\
- \n\r\
- \n# Is it a valid IP and is it different than the last one\?\r\
- \n\t:if ([:typeof [:toip \$ddnsip]] = "ip" AND \$ddnsip != \$ddnslastip \
- ) do={\r\
- \n\t\t:log info "DDNS: Sending UPDATE with \$ddnsip"\r\
- \n\t\t:log info [/tool dns-update name=\$ddnshost address=\$ddnsip key-nam\
- e=\$ddnsuser key=\$ddnspass ]\r\
- \n\t\t:global ddnslastip \$ddnsip\r\
- \n\t} else={\r\
- \n\t\t:log info "DDNS: No update required."\r\
- \n\t}\r\
- \n}\r\
- \n"
-
- /system scheduler
- add comment="ChangeIP.com Dynamic DNS Update" \
- disabled=no \
- interval=5m name=DynamicDNS \
- on-event=HomingBeacon \
- policy=read,write start-time=startup
复制代码 |
|