找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9241|回复: 16

[脚本] 请教dns转静态的方法

[复制链接]
发表于 2016-4-12 03:00:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
网上看见一个脚本,可以把DNS缓存转静态。
可以是里面指向的ip 都是 192.168.0.1。请高手指点,如何改成正确的ip数字,
谢谢

/system scheduler add name=dnsS interval=20 on-event={:local dname ;:foreach i in=[/ip dns cache find static=no] do={;   :set dname [/ip dns cache get $i name]   ;   :if ([/ip dns static find name=$dname]="") do={/ip dns static add name=$dname address=192.168.0.1};};/ip dns cache flush}
   
已经启用dns功能的,不要随便用自己电脑测试, 这个定时任务会把dns改错误了。。
routeros
发表于 2016-4-12 10:15:30 | 显示全部楼层
是实现图片中的效果吧
111.JPG
routeros
回复

使用道具 举报

 楼主| 发表于 2016-4-12 22:02:33 | 显示全部楼层
本帖最后由 xuxi3201 于 2016-4-13 09:14 编辑

:local dname
:local dadd
:foreach i in=[/ip dns cache find static=no] do={
   :set dname [/ip dns cache get $i name]   
   :set dadd [/ip dns cache get $i address]   
   :if ([/ip dns static find name=$dname]="") do={/ip dns static add name=$dname address=$dadd ttl=10m} ;}


自己瞎猜, 搞出来。
请高手指点:上面的语句,同一个域名,只记录一个ip ,

大的网站有多个ip并行,
请问如何实现: 同一个网站多个ip都记录?
routeros
回复

使用道具 举报

发表于 2016-4-13 13:35:28 | 显示全部楼层
本帖最后由 cspm333 于 2016-4-13 14:02 编辑
xuxi3201 發表於 2016-4-12 22:02
:local dname
:local dadd
:foreach i in=[/ip dns cache find static=no] do={

script:
:foreach i in=[/ip dns cache find] \
    do={
           do {
                 :local dname [/ip dns cache get $i name]
                 :if ([:len [/ip dns static find name=$dname]]=0) \
                     do={/ip dns static add name=$dname address=[/ip dns cache get $i address] ttl=10m}
               } \
           on-error={}        
          }


routeros
回复

使用道具 举报

 楼主| 发表于 2016-4-13 22:45:58 | 显示全部楼层
谢谢  cspm333 ,
我把你的代码改成:  可以了。

:foreach i in=[/ip dns cache find] \
     do={
            do {
                  :local Add [/ip dns cache get $i address]
                  :if ([:len [/ip dns static find address=$Add]]=0) \
                      do={/ip dns static add name=[/ip dns cache get $i name]  address=$Add ttl=10m}
                } \
            on-error={}        
           }

我是6.32的虚拟机版本,现在 ip dns static 里面,同一个域名,有很多ip,
我想要的就是这个效果。
routeros
回复

使用道具 举报

 楼主| 发表于 2016-4-17 15:36:20 | 显示全部楼层
:foreach i in=[/ip dns cache all find type=A static=no] \
     do={
            do {
                  :local Add [/ip dns cache all get $i data]
                  :local Nam [/ip dns cache all get $i name]
                  :if ([:len $Nam]<17&&[:len $Nam]>5) do={/ip dns static add name=$Nam  address=$Add ttl=9m}
                }
            
         }

最新的dns转静态语句,放在定时里,每2分钟执行一次,
因为加了3个过滤条件, 现在 占cpu不是很多,可以进入应用阶段。

做了静态dns  是不是网页反应快了很多呢,  我来测试。
routeros
回复

使用道具 举报

发表于 2016-4-17 16:17:06 | 显示全部楼层
本帖最后由 cspm333 于 2016-4-17 16:21 编辑
xuxi3201 發表於 2016-4-17 15:36
:foreach i in=[/ip dns cache all find type=A static=no] \
     do={
            do {

script語法嚴重錯誤,幫您修改:
:foreach i in=[/ip dns cache all find type="A"] \
     do={
            :local Add [/ip dns cache get $i address]
            :local Nam [/ip dns cache get $i name]
            :if ([:len $Nam]<17&&[:len $Nam]>5&&[:len [/ip dns static find name=$Nam address=$Add]]=0) \
                do={/ip dns static add name=$Nam  address=$Add ttl=9m}
           }



routeros
回复

使用道具 举报

 楼主| 发表于 2016-4-17 18:06:06 | 显示全部楼层
谢谢。

我中午测试通过了,才发上来的, 已经把1700个域名 转为静态。
我是ros6.34.4

如果可以,cspm333 请帮忙增加个条件: .com .cn .net .org 结尾的域名才转静态。
routeros
回复

使用道具 举报

发表于 2016-4-17 19:37:34 | 显示全部楼层
xuxi3201 发表于 2016-4-17 18:06
谢谢。

我中午测试通过了,才发上来的, 已经把1700个域名 转为静态。

很簡單,搜尋比對時多個&&(and) 條件即可.
:foreach i in=[/ip dns cache all find type="A" && \
                   (name~".com" || name~".cn" || name~".net" || name~".org")] \
     do={
            :local Add [/ip dns cache get $i address]
            :local Nam [/ip dns cache get $i name]
            :if ([:len $Nam]<17&&[:len $Nam]>5&&[:len [/ip dns static find name=$Nam address=$Add]]=0) \
                do={/ip dns static add name=$Nam  address=$Add ttl=9m}
           }

\ :下段內容仍接序本行
&& :和
|| :或
~ :包含的字串

routeros
回复

使用道具 举报

发表于 2016-4-17 19:45:38 | 显示全部楼层
本帖最后由 47771885 于 2016-4-17 19:49 编辑

复制代码

  1. name~"(com|cn|net|org)\$"
复制代码

查找条件添加以上条件根据需要修改

不用谢。。我是雷锋他老乡

如果实在要谢 请关注 http://www.radiusd.com/

顺便说下你的这个会脚本会很耗资源 需要改进
routeros
回复

使用道具 举报

发表于 2016-4-17 20:52:42 | 显示全部楼层
47771885 发表于 2016-4-17 19:45
查找条件添加以上条件根据需要修改

不用谢。。我是雷锋他老乡

你那网站有时候能访问有时候访问不了。


额外对楼主说,ros的dns实在不咋地............

点评

哈哈哈哈 阿里的解析不是很给力了。。。还有有时候后台维护下刚上架的  发表于 2016-4-17 23:14
routeros
回复

使用道具 举报

 楼主| 发表于 2016-4-17 21:20:59 | 显示全部楼层
谢谢 cspm333   ,已经搞定  .com .cn .net .org 结尾。
谢谢 47771885 , 你说对了,我昨天写的语句执行一次 一个cpu满载1分钟。今天的一个cpu只要3秒钟。

seignior  我是为了加快常用网站的打开速度, 所以只缓存长度小于17的域名。
如果还是慢, 就半小时清空一次。
routeros
回复

使用道具 举报

发表于 2016-4-17 21:25:23 | 显示全部楼层
47771885 发表于 2016-4-17 19:45
查找条件添加以上条件根据需要修改

不用谢。。我是雷锋他老乡

剛驗證語法確實是如此.
小弟長知識了,感謝您~

点评

不用谢共同学习。人一步我两步人快步我跑步。。。哈哈哈只有比别人付出更多才可能收获更多  发表于 2016-4-17 23:26
routeros
回复

使用道具 举报

发表于 2016-4-18 23:42:47 | 显示全部楼层
都是高手,学习了,谢谢
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-4-19 23:28 , Processed in 0.090665 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表