Mikrotik ROS脚本语法入门

所属分类: 网络 / 路由器 阅读数: 1697
收藏 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
引用变量的值要在变量前面加$

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

Cisco路由静态路由配置试验步骤 实现不同网段之间的路由互相访问

当所有的Router都连接在一起的时候,其中同一网段内是可以实现互相访问的,但是我们如何才能够让不同网段之间的路由也可以互相访问呢?那就是静态路由配置,可能有的朋友会问怎么不用动态路由协议呢?下面我们一起来看一下
收藏 0 赞 0 分享

怎样配置思科路由器自反ACL 实现网段之间单向访问?

ACL可以限制网络流量、提高网络性能,为了保护内网的安全,可以只允许内网访问外网,不允许外网访问内网,这里利用cisco 路由器的自反ACL来实现。
收藏 0 赞 0 分享

AR28/AR46系列 路由器基于源地址策略路由的典型配置

基于策略的路由为网络管理者提供了比传统路由协议对报文的转发和存储更强的控制能力。策略路由使网络管理者能根据它提供的机制指定一个报文采取的具体路径。而在当今高性能的网络中,这种选择的自由性是很需要的
收藏 0 赞 0 分享

Cisco路由基础:双线策略路由的三种实现方式总结+端口映射

这篇文章主要为大家介绍了双线策略路由的三种实现方式总结和端口映射方面的问题,双线比单线要复杂多了,但把策略路由的原理弄明白了,就会发现其实并不难,需要的朋友可以参考下
收藏 0 赞 0 分享

魅族智能路由器已在开发中 魅族路由器有哪些功能?

自9月开始,魅族将连续四个月举行新品发布会,不出意外,MX4 Pro将在下月推出。而近日魅族工程师cefanty在论坛爆料称,魅族智能路由器已经在开发中,具体情况我们一起来了解吧
收藏 0 赞 0 分享

基于windows的源地址路由设置的3种方法

有一些情况下,目的路由满足不了我们的要求,而需要做源地址路由。比如我们的服务器有多个网关的情况,而目的端的IP地址无法确定,做不了目的路由,数据就会从默认的路由出去,这样数据肯定会有问题的,基于windows的源地址路由设置的解决办法如下
收藏 0 赞 0 分享

魅族智能路由器怎么样?魅族智能路由器参数配置如何

相信还有很多朋友对于魅族新产品魅族智能路由器的参数配置还不太清楚,下文小编就为大家带来魅族智能路由器参数方面的内容,一起去了解下吧
收藏 0 赞 0 分享

小米路由器怎么升级固件?小米路由器固件升级教程

由于小米路由器今年才正式发布,还有很多功能并未完善,升级空间很大。那么小米路由器怎么升级固件?这里简单介绍下怎么为你的小米路由器升级固件的方法。一起来看看吧
收藏 0 赞 0 分享

华为路由器 eNSP 配置 rip OSPF 路由重发布

这篇文章主要为大家介绍了给华为路由器eNSP配置rip OSPF 路由重发布的过程,不了解路由器rip OSPF 路由重发布的朋友可以和脚本之家的小编一起来学习一下
收藏 0 赞 0 分享

怎么查看无线路由器的密码

很多新手朋友在第一次设置完无线路由器后,却不知道怎么查看无线路由器的密码如何查看无线密码是多少,今天笔者将同大家分享查看无线路由器密码的方法,需要的朋友一起来看看吧
收藏 0 赞 0 分享
查看更多