Mikrotik ROS脚本语法入门

所属分类: 网络 / 路由器 阅读数: 1706
收藏 0 赞 0 分享

ROS也可称为是Route Operation System,意为"软件路由器".

一般认为用普通PC安装一套专用的路由器程序组成的系统称为软件路由器,PC电脑+免费的软件=专业的软件路由器

ROS 脚本 注解
四种变量
global - 定义全局变量, 可以要所有的 脚本 中调用共享
local - 定义本地变量,只能在其所要的 脚本 下调用,不能被其它 脚本 共享
loop index variables - 定义在for或foreach里的索引号变量
monitor variables - 监视变量
ROS算术操作
- 负号;相减。
! 逻辑非。
/ 相除。
. 连接。两个符串的连接,添加元素到列表
^ 异或(XOR)
~ 取反
* 相剩
& 与(AND)
&&逻辑与
+ 相加
< 小于
<<向左位移
<=小于等于
> 大于
>=大于等于
>>向右位移
| 或
||逻辑或
ROS说明书里的例子:
计算顺序
[admin@MikroTik]> :put (10+1-6*2=11-12=2+(-3)=-1)
false
[admin@MikroTik]> :put (10+1-6*2=11-12=(2+(-3)=-1))
true
逻辑非
[admin@MikroTik]> :put (!true)
false
[admin@MikroTik]> :put (!(2>3))
true
数位取反
[admin@MikroTik]> :put (~255.255.0.0)
0.0.255.255
加法
[admin@MikroTik]> :put (3ms + 5s)
00:00:05.003
[admin@MikroTik]> :put (10.0.0.15 + 0.0.10.0)
cannot add ip address to ip address
[admin@MikroTik]> :put (10.0.0.15 + 10)
10.0.0.25
减法
[admin@MikroTik]> :put (15 - 10)
5
[admin@MikroTik]> :put (10.0.0.15 - 10.0.0.3)
12
[admin@MikroTik]> :put (10.0.0.15 - 12)
10.0.0.3
[admin@MikroTik]> :put (15h - 2s)
14:59:58
乘法
[admin@MikroTik]> :put (12s * 4)
00:00:48
[admin@MikroTik]> :put (-5 * -2)
10
除法
[admin@MikroTik]> :put (10s / 3)
00:00:03.333
[admin@MikroTik]> :put (5 / 2)
2
[admin@MikroTik]> :put (0:0.10 / 3)
00:00:02
比较
[admin@MikroTik]> :put (10.0.2.3<=2.0.3.10)
false
[admin@MikroTik]> :put (100000s>27h)
true
[admin@MikroTik]> :put (60s,1d!=1m,3600s)
true
[admin@MikroTik]> :put (bridge=routing)
false
[admin@MikroTik]> :put (yes=false)
false
[admin@MikroTik]> :put (true=aye)
false
逻辑与 AND, 逻辑或 OR
[admin@MikroTik]> :put ((yes && yes) || (yes && no))
true
[admin@MikroTik]> :put ((no || no) && (no || yes))
false
数位与AND, 或OR, 异或XOR
[admin@MikroTik]> :put (10.16.0.134 & ~255.255.255.0)
0.0.0.134
位移操作
[admin@MikroTik]> :put (~((0.0.0.1 << 7) - 1))
255.255.255.128
连接操作
[admin@MikroTik]> :put (1 . 3)
13
[admin@MikroTik]> :put (1,2 . 3)
1,2,3
[admin@MikroTik]> :put (1 . 3,4)
13,4
[admin@MikroTik]> :put (1,2 . 3,4)
1,2,3,4
[admin@MikroTik]> :put ((1 . 3) + 1)
14
[admin@MikroTik]> :seta "It's "
[admin@MikroTik]> :put ($a . OK)
It's OK
ROS 脚本 保留字
beep execute global list pick time toip typeof
delay find if local put toarray tonum while
do for led log resolve tobool tostr
environment foreach len nothing set toid totime
:beep length=2s frequency=10000
产生2秒10kHz的音频
length缺省值为100ms
frequency缺省值为1000Hz
:set a "/int dis lan/n/int dis wan"
:execute $a
执行多条命令,例子里执行了两条命令。/n是换行
:global
定义全局变量
:list interface
显示相关命令。显示当前目录及子目录下有关interface的命令
:pick
取字符串或数组的某一断。字符串(数组)的第一个为0。
[admin@MikroTik]>:put [:pick "I love you" 2 6]
love
:time
执行命令所需的时间
[admin@MikroTik]> :put [:time [:resole www.sina.com.cn]]
00:00:00.006
执行解析www.sina.com.cn这个域名所需的时间
toip toarray tonum tobool tostr toid totime
转换值类型
:delay 3
延时3秒,缺省为1秒
:find
查找字符串或数组中第一个出现查找内容的位置
[admin@MikroTik]>:put [:find abcdcba cd]
2
[admin@MikroTik]>:put [:find "1,2,3,4,3,2,1" 2]
1
:put
输出到屏幕上,上面就很多例子了。
:if
条件选择
[admin@MikroTik]>:if(1<2) do={:put true}
true
如果条件为真,执行do={}里面的命令
[admin@MikroTik]>:if(1>2) do={:put true} else={:put flase}
flase
如果条件为真,执行do={}里面的命令,否则执行else={}里有命令
:local
定义本地变量
:while
条件为真时循环执行do={}里的 脚本 命令
[admin@MikroTik]>:set i 0;:while($i<5) do={:put $i;:set i ($i+1)}
0
1
2
3
4
5
:for
循环执行do={}里的 脚本 命令
:for i from=1 to=100 step=30 do={:put $i}
1
31
61
91
:foreach
在集合(数组)里循环执行do={}里的 脚本 命令
:foreach i in=[/interface find type=ether] do={:put [/interface get $i name]}
ether1
ether2
ether3
ether4
在[/interface find type=ether]的集合(类型为ether的interface ID)循环输出
interface的名称。我这时有四张网卡
:log 日志类型 日志内容
写文本到日志(script log)
类型在/system logging里可以找到
:log info "系统信息"
到LOG里查查运行结果吧
:resolve
解析域名的IP地址
[admin@MikroTik] > :put [:resolve www.sina.com.cn]
61.172.201.240
:environment print
显示所有变量及其值
:len
字符串或数组的长度
[admin@MikroTik] > :put [:len hello]
5
[admin@MikroTik] > :put [:len "1,2,23,65,54,6"]
6
:nothing
空值。nothing不等0,不等于空字符""
:find abc a的结果是0
:find abc d的结果是nothing
:set
赋值
[admin@MikroTik] > :set a test
将abc字符赋给变量a
[admin@MikroTik] > :put $a
test
[admin@MikroTik] > :put a
a
引用变量的值要在变量前面加$

更多精彩内容其他人还在看

怎么把两台TP LINK无线路由器中继桥接?

怎么把两台TP LINK无线路由器中继桥接?现在公司要求将两台TP-LINK无线路由器实现中继连接以实现覆盖更多区域的目的,该怎么实现呢?下面分享详细的设置方法,需要的朋友可以参考下
收藏 0 赞 0 分享

新入手的无线路由器该怎么设置与调节?

新入手的路由器该怎么设置与调节?刚入手一个路由器想捯饬捯饬,所以整理成了一片文章,讲述了无线路由器的安装与调试过程,需要的朋友可以参考下
收藏 0 赞 0 分享

路由器TL-WR842N该怎么设置连网?

路由器TL-WR842N该怎么设置连网?新入手TL-WR842N不知道该怎么设置,今天我们就来看看设置宽带账号密码登录、固定IP登录、自动获取IP地址,需要的朋友可以参考下
收藏 0 赞 0 分享

路由器只让访问指定网站、路由器限制访问网站的方法

在公司局域网中,有时候我们需要禁止电脑随意浏览网站、限制电脑访问网站,或者只让电脑访问指定网站,如何实现呢?可以通过以下几种方法
收藏 0 赞 0 分享

迅捷(FAST)FW300R路由器管理员密码是多少?迅捷(FAST)管理员密码设置步骤

很多朋友咨询迅捷(FAST)FW300R路由器管理员密码是多少,怎么设置密码?今天小编就为大家带来迅捷(FAST)设置管理员密码步骤
收藏 0 赞 0 分享

家用无线路由器的配置和常见问题汇总

家用无线路由器现在是很常用的东西,基本上每家有网的朋友都会需要,但是很多人不知道怎么配置路由器,在使用的时候遇到问题该怎么解决,今天我们就来看看家用无线路由器的详细配置方法,和常见的一些问题汇总,需要的朋友可以参考下
收藏 0 赞 0 分享

联通光猫HG8321R怎么破解? 华为hg8321开启路由功能的技巧

联通光猫HG8321R怎么破解?华为hg8321默认状态下是没有开启路由功能的,用户只能再接一个路由器来PPPOE来拨号上网,想要使用hg8321自带路由功能就需要自己设置,下面分享详细的设置方法
收藏 0 赞 0 分享

LB-LINK无线路由器设置界面192.168.16.1进不去怎么办?

LB-LINK无线路由器设置界面192.168.16.1进不去怎么办?今天想设置路由器的时候,打开192.168.16.1,发现打不开,该怎么办呢?下面分享七种解决办法,需要的朋友可以参考下
收藏 0 赞 0 分享

EDUP EP-2916怎么设置无线中继器repeater模式?

EDUP EP-2916怎么设置无线中继器repeater模式?不会使用中继器该怎么办?今天我们给大家介绍一下EDUP EP-2916设置无线中继器repeater模式的详细教程,需要的朋友可以参考下
收藏 0 赞 0 分享

路由器wan端口网关未连接电脑无法上网该怎么办?

路由器wan端口网关未连接电脑无法上网该怎么办?出现这种问题的原因有很多,比如账号密码不对,没有设置自动湖区地址,或者是路由器的问题,今天我们就来看看怎么解决这个问题,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多