国内领先的企业通信解决方案服务商专业提供平价宽带,平价固话,平价项目工程方案!
“我们业务范围:光纤宽带,IP城域网,无线固话,有线固话,网络固话,固话靓号,综合布线,200IP业务,电子群真等,业务电话:4008-528-159”

全部 综合网络技术 常见电话故障 宽带常见问题 业务综合问题 常用技术文章 产品参数文章
首页 > 帮助中心 > 南粤通信工程师傅常用到ROS脚本[CTQ]

南粤通信工程师傅常用到ROS脚本[CTQ]

类别: 常用技术文章    来源:www.nanyuetong.com
摘要:http://ros-pack.mrli888.cn:6080 [mikrotik 所有安装包] 变量使用规则: :local znewIPa  ($znewIP.$inface)  两变量相...

http://ros-pack.mrli888.cn:6080 [mikrotik 所有安装包]

变量使用规则:

:local znewIPa  ($znewIP.$inface)  两变量相联要用小括号, 常量要用   “常量”

报警

:log warning ($znewIPa)



自动更新10/11IP段



:local inface %vlan46
:local zconfIP
:local zcurIP
:local znewIP
:local znum1
:local znum2
:local znum3
:local znum4
:local ztmpstr1
:local ztmpstr2
:local ztmpstr3
:local ztmpstr4
:local zconfIP [/ip address get [/ip address  find interface=("vlan46")] network]
:set znum1 [:find $zconfIP "."]
:set ztmpstr1 [:pick $zconfIP 0 $znum1]
:set znum2 [:find $zconfIP "." $znum1]
:set ztmpstr2 [:pick $zconfIP ($znum1+1) $znum2]
:set znum3 [:find $zconfIP "." $znum2]
:set ztmpstr3 [:pick $zconfIP ($znum2+1) $znum3]
:set ztmpstr4 [:pick $zconfIP ($znum3+1) [:len $zconfIP]]
:set znewIP ($ztmpstr1 . "." .  $ztmpstr2 . "."  . $ztmpstr3 . "." . 1)


:local znewIPa  ($znewIP.$inface)
:log warning ($znewIPa)

/ip route set [/ip route find comment=("eth2-10/11")] gateway=$znewIPa




自动更新10/11IP段






https://bbs.aliyun.com/read/259013.html?spm=a2c4e.11155515.0.0.511124d1QEOALV (在阿里云安装虚拟机教程)

官方网址:http://wiki.mikrotik.com/wiki/Manual:Interface/VLAN

路由表下载:www.tcp5.com提供 作者博客:http://ros6.com/

SSID中文转化:http://www.cat-home.org/app/chssid.php

语法:

  if (条件) do={ true 动作} else={ false 动作}





更新VPN IP地址

-----------脚本--------------

{
#新域名IP
:local vpnnewip [:resolve chenyue0.9966.org]

#原本IP
:local vpnoldip [ /interface ovpn-client  get [/interface ovpn-client  find name=ovpn-out1] running ]

:if ($vpnoldip != true) do={
/interface ovpn-client  set [/interface ovpn-client  find name=ovpn-out1] connect-to=$vpnnewip
:log error ($vpnoldip)}

}


ADSL动态映射脚本 [2016年10月19日 23:42:27]

------------------------------------------

:global assign
:global new
:global status
:global x
:set x 1
:for i from=1 to=$x do={
:set status [/interface get[/interface find name=("pppoe-out".$i)]running]
:if($status=true) do={
:set new [/ip address get [/ip address find dynamic=yes interface=("pppoe-out" . $i)] address]
:set new [:pick $new 0 ([:len $new] -3)]
:set assign [/ip address get [/ip address find dynamic=no interface=("pppoe-out".$i)] address]
:set assign [:pick $assign 0 ([:len $new] -3)]
:if ($assign != $new) do={ /ip address set [/ip address find comment=("adsl_" . $i)] address=$new network=$new broadcast=$new
/ip firewall nat set [/ip firewall nat comment="3389"] dst-address=$new
}
}
}

-----自动更新VPN服务IP地址,批理执行[内标识]------------------------------------------------------------------------

:local ii "0"
:local pcom8 ""
/interface
#开始循环
:foreach puse in [find disabled=no] do={
#查找没禁用的
:local pcom [get $puse comment]
#备注
:set pcom8 [:pick $pcom ([:find $pcom "["]+1) [:find $pcom "]"]]
#处理备注
:local pnam [get $puse name]
#找到对应名称


:set ii ($ii + 1)
# ii自加1

:if ($pcom8="rou3") do={
#开始比较判断, 把备注[rou3]找出来判断
:log warning ("标识有rou3【" . $pnam . "】找到了!")

#新域名IP
:local vpnnewip [:resolve XXX.XXX.org]

#VPN状态
:local status [ /interface pptp-client  get [/interface pptp-client  find name=$pnam] running ]

:if ($status != true) do={
/interface pptp-client  set [/interface pptp-client  find name=$pnam] connect-to=$vpnnewip
:log error ("【" . $pnam . "】IP服务更新成功")}


}
}


-----PPPOE 执行到期脚本-------崔工程师提供--------------------------------------------------------------

#脚本制定 微信:22402506
:local tz
:local prof
:local tj
:set tz 1
:set prof 2day
:set tj 2
#tz为提前发送到期通知的天数
#比如:今天是20101213, 如果设置的tz为2天,那么20101214 20101215 这2个备注将下发通知
#如果tj为1 那么20101213的不停机。20101212的停机,如果设置为0,那么20101213停机
#prof为提前发送到期通知的模板
#tj为到期后几天停用用户账号,0为到期即停机
:local nyr [/system clock get date]
#年月日 2010/dec/12
:local yy ([:find jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec [:pick $nyr 0 3]]+1)
#查到当前月份
:if ($yy<10) do={:set yy (0 . $yy)}
#月份处理

:set nyr ([:pick $nyr 7 11] . $yy . [:pick $nyr 4 6])
#获得年份

:local ii "0"
:local pcom8 ""
/ppp secret
#开始循环
:foreach puse in [find disabled=no] do={
#查找没禁用的帐号
:local pcom [get $puse comment]
#备注
:set pcom8 [:pick $pcom ([:find $pcom "["]+1) [:find $pcom "]"]]
#处理备注
:local pnam [get $puse name]
#帐号
:local tzprof [get $puse profile]
#配置文件

:set ii ($ii + 1)
# ii自加1

:if ($pcom8!="" && $pcom8!="admin") do={
#开始比较判断, 备注不为空 也不为 admin

:if ([:len $pcom8]<8) do={
#长度判断

:log error ("账号【".$pnam."】日期备注不足8位,现备注日期:【" . $pcom8 . "】");:beep frequency=2080;
} else={

#转成数字
:if ($pcom8>1) do={
#如果大于1
:if ($pcom8>=$nyr && ($pcom8 - $nyr)<=$tz && $tzprof!=$prof) do={
#如果大于等于当前日期 并且 过期天数($pcom8 - $nyr)小于等于通知时间,同时配置文件不等于$prof)

/ppp secret set [/ppp secret find name=$pnam] profile=$prof;:set ii ($ii - 1)
#设置pppoe账号的配置文件为$prof,然后ii减一


:log warning ("用户【" . $pnam . "】已到期,通知已下发!")
}}
:if ($nyr>=$pcom8 && ($nyr - $pcom8)>=$tj) do={
#如果已经过期了,则强制下线并下发通知

/ppp active remove [/ppp active find name=$pnam];
/ppp secret disable [/ppp secret find name=$pnam];:set ii ($ii - 1)
:log error ("用户【" . $pnam . "】已过期停用并强制下线!")
}}} else={:log error ("用户【" . $pnam . "】的备注【".$pcom."】格式有误,请重新备注!")}
}
:log warning ("有效用户数【" . $ii . "】")


---自动更新IP到3322动态域名脚本---------------------------------------------------------------------------------------------------

:do {
:local ether
#DDNS帐号
:local user root
#DDNS密码
:local pass XXXX
#DDNS域名
:local host XXXX.f3322.org
#以下不需要修改
:local status [/interface pppoe-client get [/interface pppoe-client find name="pppoe-out1"] running];
:if ($status=true) do={
:set ether "pppoe-out1"};
:if ($status=false) do={
:set ether "pppoe-out1"};
:local oldip [:resolve $host]
:delay 5s
:local newip [ /ip address get [/ip address find interface=$ether ] address ]
:set newip [:pick $newip 0 [:find $newip "/"]]
:if ($oldip = $newip) do={
:log error ($host."\B6\AF\CC\AC\49\50\B5\D8\D6\B7\B2\BB\B1\E4\CE\DE\D0\EB\B8\FC\D0\C2: ".$oldip)}
:if ($oldip != $newip) do={
/tool fetch url=("http://www.nanyuetong.com/?$newip") mode=http user=$user password=$pass dst-path=$host
:log error ("\BE\C9\B5\C4IP\B5\D8\D6\B7\A3\BA: ".$oldip)
:log error ("\D0\C2\B5\C4IP\B5\D8\D6\B7\A3\BA: ".$newip)
:delay 3s
:local Result [/file get $host contents]
:if ([:find $Result "good"] != "nil") do={
:log error ($host." \B8\FC\D0\C2\B3\C9\B9\A6")
} else={
:log error ($host." \B8\FC\D0\C2\CA\A7\B0\DC")}
/file remove $host}}ost}}

------自动更新指定网卡非PPPOE-OUT IP更新至3322服务脚本--------2016年10月22日 12:44:30---------------------------

:do {
:local ether
#DDNS帐号
:local user root
#DDNS密码
:local pass XXXXX
#DDNS域名
:local host XXX.8866.org
#以下不需要修改
:local status [/interface pppoe-client get [/interface pppoe-client find name="pppoe-out1"] running];
:if ($status=true) do={
:set ether "pppoe-out1"};
:if ($status=false) do={
:set ether "pppoe-out1"};
:local oldip [:resolve $host]
:delay 10s
:local newip [/ip address get [/ip address  find interface=("ether2")] address ]

#指定更新ether2网卡的IP
:set newip [:pick $newip 0 [:find $newip "/"]]
:if ($oldip = $newip) do={
:log error ($host."\B6\AF\CC\AC\49\50\B5\D8\D6\B7\B2\BB\B1\E4\CE\DE\D0\EB\B8\FC\D0\C2: ".$oldip)}
:if ($oldip != $newip) do={
/tool fetch url=("http://members.3322.org/dyndns/update\?system=dyndns&hostname=\
$host&myip=$newip") mode=http user=$user password=$pass dst-path=$host
:log error ("\BE\C9\B5\C4IP\B5\D8\D6\B7\A3\BA: ".$oldip)
:log error ("\D0\C2\B5\C4IP\B5\D8\D6\B7\A3\BA: ".$newip)
:delay 3s
:local Result [/file get $host contents]
:if ([:find $Result "good"] != "nil") do={
:log error ($host." \B8\FC\D0\C2\B3\C9\B9\A6")
} else={
:log error ($host." \B8\FC\D0\C2\CA\A7\B0\DC")}
/file remove $host}}

-------指定 更新网卡网关到指定路由-----------------------------------------------------------------------------------

:local zconfIP
:local zcurIP
:local znewIP
:local znum1
:local znum2
:local znum3
:local znum4
:local ztmpstr1
:local ztmpstr2
:local ztmpstr3
:local ztmpstr4
:local zconfIP [/ip address get [/ip address  find interface=("ether2")] network]
:set znum1 [:find $zconfIP "."]
:set ztmpstr1 [:pick $zconfIP 0 $znum1]
:set znum2 [:find $zconfIP "." $znum1]
:set ztmpstr2 [:pick $zconfIP ($znum1+1) $znum2]
:set znum3 [:find $zconfIP "." $znum2]
:set ztmpstr3 [:pick $zconfIP ($znum2+1) $znum3]
:set ztmpstr4 [:pick $zconfIP ($znum3+1) [:len $zconfIP]]
:set znewIP ($ztmpstr1 . "." .  $ztmpstr2 . "."  . $ztmpstr3 . "." . 1)
/ip route set [/ip route find comment=("eth2-10")] gateway=$znewIP

---------桥接图-----------------------------------------------------------------------

------近期恢复更新 国内路由表------------------------------------------------------------------------------------------


近期恢复更新。

提供2016-09-07更新路由表下载:

http://www.tcp5.com/20160907.zip


----打印变量-------------------------------------------------------------

[admin@iphone6s] > :environment print




截取字符


------通过TXT修改后缀.pbk 创建VPN电话薄 再通过rasdial命令拨号--------------2016年10月23日 06:04:47----


Rasdial 命令详解:

通过使用 rasdial 命令,可以创建连接到拨号网络连接的简单批处理文件。还可以从命令行使用 rasdial建立网络连接或者断开网络连接。与自动拨号不同,rasdial命令不会在拨入连接前自动检测网络连接,而且不依赖于“远程访问自动连接管理器”服务。
例如,您可能希望在非高峰期时段自动连接到拨号连接以传输较大的数据文件。可以创建一个批处理文件或者一组批处理文件使该过程自动化。将使用rasdial 命令开始和结束拨号连接。还有其他可配置的参数与 Rasdial 相关,例如要使用的电话号码,是否使用回拨号码。



任何 Microsoft 客户的自动连接过程。如果在没有选项的情况下使用,则 rasdial显示当前连接的状态。

语法
rasdial ConnectionName [UserName[{Password|*}]] [/domain:Domain][/phone:PhoneNumber][/callback:CallbackNumber][/phonebook:PhonebookPath] [/prefixsuffix]

rasdial [ConnectionName] /disconnect

参数
ConnectionName
连接到电话簿 (.pbk) 项时才需要。指定位于 systemroot\System32\Ras 文件夹中的当前.pbk 文件中的项。如果 ConnectionName包含有空格或特殊字符,请使用引号将文本引起来(例如,"Connection Name")。
除非选择“个人电话簿”选项,否则使用 Rasphone.pbk 文件。如果选中了“个人电话簿”选项,则使用UserName.pbk 文件。当选择“个人电话簿/p”时,Rasphone标题栏上将显示名称。如果名称发生冲突,就会附加号码。

UserName [{Password|*}]
指定连接所使用的用户名和密码。如果使用了星号,会提示用户输入密码,但不显示输入的字符。
/domain:Domain
指定用户帐户所在的域。如果未指定,将使用“连接到”对话框中“域”字段的最后一个值。
/phone:PhoneNumber
将 Rasphone.pbk 中的项目的电话号码替换为指定的电话号码。
/callback:CallbackNumber
将 Rasphone.pbk 中项目的回拨号码替换为指定的回拨号码。
/phonebook:PhonebookPath
指定电话簿文件的路径。默认路径为systemroot\System32\Ras\username.pbk。可以指定文件的完整路径。
/prefixsuffix
将当前 TAPI位置拨号设置应用于电话号码。这些设置是在“控制面板”的“电话服务”中配置的。默认情况下该选项处于关闭状态。
/disconnect
断开连接时需要。断开指定项。也可以通过键入 /d 断开连接。


注释
Rasdial 不支持下列的 Rasphone.exe 功能:
在拨号期间需要“终端”模式用户输入的项目。

接线员辅助拨号或者人工拨号。

以下是一个拨号上网的批处理文件,写好之后一直放在电脑中,最近搞大总结,拿出来记录在博客中.

----------------------代码开始-------------------------------
echo off                            #关闭回显
:disconnect                            #设置标签,此处进入断开连接的批处理块
echo disconnect from server.
rasdial  /disconnect                #先断开所有拨号连接
:beginingDial                        #设置标签,此处为开始拨号的批处理块
echo dial beginning!
rasdial %1 %2 %3                    #开始拨号连接,参数1是拨号连接的本地名称,参数2是此拨号连接所用的用户名,参数3是密码
if errorlevel 1 goto beginingDial    #如果拨号连接返回值(即rasdial执行返回值为1,则拨号连接未成功,这时重新去拨号连接.)
----------------------代码结束-------------------------------


------自动执行更新IP至指定网址-----------------------------------------------------------------------------

:local rosname
#路由编号
:local ethname
#网卡名称

:local ethip [/ip address get [/ip address  find interface=("ether2")] address ]
:set ethip [:pick $ethip 0 [:find $ethip "/"]]

#网卡IP地址
:local beizu
#备注
:local host1  http://www.XXXX.com/
:local host2
#以下是设置传值
set rosname  rou1
set ethname  vpn
set beizu 0757fushan

:local host ($host1."vpnip-rosname-".$rosname."-ethname-".$ethname."-ethip-".$ethip."-beizu-".$beizu.".html")

/tool fetch url=("$host")

:delay 5s
#等待5秒
set host2 [:pick $host 26 [:find $host 0]]
#:log error ($host2)
#清除文件
file remove $host2
-

-------同时兼容,国内国外网,访问国内走国内线路,访问国外走香港VPN线路------更新:2016年11月1日 09:33:51------

1、上传国外路由表,例如:

脚本:

add address=134.42.224.0/24 disabled=no list=GOOGLE
2、标记包,和标记路由,如图

选择路由表标识

强制非GOOGLE 路由表用户 使用以下DNS

最后:设置路由表,把标识路由表指向你境外的VPN即可!

然后把其它上网方式所有DNS,都只保留:8.8.8.8,即可正常同时访问国内和国外网站




服务端拨客户端得到IP


:local ii "0"
:local pcom8 ""
/interface
#开始循环
:foreach puse in [find disabled=no] do={
#查找没禁用的帐号
:local pcom [get $puse comment]
#备注
:set pcom8 [:pick $pcom ([:find $pcom "["]+1) [:find $pcom "]"]]
#处理备注
:local pnam [get $puse name]
#找到对应帐号


:set ii ($ii + 1)
# ii自加1

:if ($pcom8="rou1") do={
#开始比较判断, 把备注[rou1]找出来判断
:log warning ("标识有rou1【" . $pnam . "】找到了!")

#新域名IP
:local vpnnewip [/ppp active get  [/ppp active  find name=0757-1] caller-id]

#VPN状态
:local status [ /interface pptp-client  get [/interface pptp-client  find name=$pnam] running ]

:if ($status != true) do={
/interface pptp-client  set [/interface pptp-client  find name=$pnam] connect-to=$vpnnewip
:log error ("【" . $pnam . "】IP服务更新成功")}


}
}




如何设置ROS时间与北京时间同步


/system clock

set time-zone-name=Asia/Taipei

/system ntp client

set enabled=yes mode=unicast primary-ntp=202.120.2.101 secondary-ntp=192.43.244.18



自动更新IP



:local ii "0"
:local pcom8 ""
:local vpnros ""
:local host2 ""

#路由编号
:set vpnros  rou1

/interface
#开始循环
:foreach puse in [find disabled=no] do={
#查找没禁用的帐号
:local pcom [get $puse comment]
#备注
:set pcom8 [:pick $pcom ([:find $pcom "["]+1) [:find $pcom "]"]]
#处理备注
:local pnam [get $puse name]
#找到对应帐号


:set ii ($ii + 1)
# ii自加1

:if ($pcom8=$vpnros) do={
#开始比较判断, 把备注[$vpnros]找出来判断
:log warning ("标识有$vpnros【" . $vpnros . "】找到了!")



#域名网址
:local host1  http://XXXXX.com/

#执行打开网址

:local hostvpn ($host1."getvpnip-r-".$vpnros.".html")
:local hostvpnurl ("getvpnip-r-".$vpnros.".html")

/tool fetch url=("$hostvpn")

#获取新IP址址
:local vpnnewip [/file get $hostvpnurl contents]

#:log warning ("IP为【" . $hostvpnurl . "】!")

#VPN状态
:local status [ /interface sstp-client  get [/interface sstp-client  find name=$pnam] running ]

:if ($status != true) do={
/interface sstp-client  set [/interface sstp-client  find name=$pnam] connect-to=$vpnnewip
:log error ("【" . $pnam . "】IP服务更新成功")}

:delay 5s
#:log warning ("更新成功")
#set host2 [:pick $hostvpn 26 [:find $hostvpn 0]]
#:log error ($host2)
#file remove $host2



}
}



:local status [ /ip route  get  [/ip route find comment=2] gateway]


#选定义本地变量为status,通过get方法获得 gateway 值 find 是查找对应值列表

:log warning $status
#打印变量值





2018-5-13


今天解决了我2年解决不了问题



#这个脚本的作用是L2TP服务器,用户只用一个用户名拨号进来(空密码),如果服务器内没有这个用户记录,
#就开添加一个对应的用户名帐号,空密码,十分钟后停用该帐号,脚本 放在计划任务内,可以在本地认证
#和RADIUS环境下,效果一样。还有一些工作要做的(比如记录用户的一些源信息,防止用户不断试用,比如源IP)
#这里只做参考模板
:global T
:global t [/sys clo get time]
:foreach k in=[/ppp sec find disabled=yes] do={:local kick [/ppp sec get $k name];/ppp acti remove [find name=$kick]}
:foreach j in=[/ppp sec find disabled=no service=l2tp ] do={
:local ctime [/ppp sec get $j comment]
:local chk ($t-$ctime)
:if ($chk > "00:00:00") do={/ppp sec disable $j}
}
:foreach i in=[/log find where topics~"l2tp" message~"failed" time>$T] do={
set T  [/log get $i time]
:local msg [/log get $i message]
:local vpnname [:pick $msg ([:find $msg "user "]+5) [:find $msg " auth"]]
:if ([:len [/ppp sec find name=$vpnname ]] = 0) do={/ppp sec add name=$vpnname pass="" comment=($T+"00:10:00")}

}


ROS网盘 2016 链接:http://pan.baidu.com/s/1dDS0jfF 密码:xw9a  1、下载相应版本的ROS升级降级包(zip后缀),解压缩后得到20个左右npk后缀的文件。 2、把这些npk文件拖放到winbox的files的根目录,或者上传到ros的ftp根目录。 3、如果是升级,直接重启ROS即可。如果是降级,在Winbox中点击System-Pakages-Downgrade。用winrar。解压右边有密码显示



收藏本页】 【返回顶部】 【关闭窗口

将该资讯分享至:
回顶部 
官方微信