admin管理员组

文章数量:1532521

2024年6月25日发(作者:)

MikroTik Script脚本笔记

一. 基本介绍

MirkroTic提供了可对嵌入式脚本进行执行的功能。路由器可以根据用户自

定义的脚本对其自动的维护,管理员也可通过自己定义的脚本对路由器进行相应

的配置,达到我们想要的功能。对很喜欢DIY的用户来说,这是一个很不错的选

择。

自定义的脚本大都通过事件来进行触发,而触发脚本的事件在System

Scheduler, Traffic Monitoring Tool, Netwatch Tool。也可以主动的run脚

本,在System script调用。

二. Script基本语法

1.一个脚本配置由路由器命令和表达式组成的。路由器命令为标准RouterOS

命令,例如:/ip firewall filter add chain=forward protocol=gre action=drop这个

是描述在防火墙中过滤gre协议的操作。在表达式的前面需要用 “ : ”为前缀,

而且它能在任何目录下操作。各个标志之间要用空格分开。

2.

一些终端命令是非常有用的,如他们可以得到一个值给其他命令,作为其

他命令的参数。在RouterOS终端控制中通过命令得到的返回值,返回值是不

会被显示出来。应该将一个命令包含在“[ ]”括号中,这样就能从一个命令中

得到返回值,这个称为命令替换。

例如:

[admin@MikroTik] > /interface

[admin@MikroTik] interface> find type=ether

[admin@MikroTik] interface> (没有输出结果)

[admin@MikroTik] interface> :put [find type=ether]

*1,*2 (输出结果)

3.当一条命令在一行中不能写完的时候我们通常情况采用在命令行的尾部

加上“”,注释中不能以“”连接。除了连接命令和在字符串中出现“”,

其他地方出现都是非法的。

ip hotspot user add server= name= password= address= mac-address=

profile= routes= limit-uptime=limit-bytes-in= limit-byt

copy

4.一条命令行结束后应该以“;”或者以“NEWLINE”结尾。有时候命令

行不需要以“;”和“NEWLINE”结尾。单条在(),{},[]中的命令不需要

结束符。

:if (true) do={ :put “lala”}

:put [/ip route get [find gateway=1.1.1.1]];

5.对脚本的注释我们以#开始,但是#出现在字符串中的时候系统不认为它是

注释了。

#this is a comment

#bad comment

:global myStr "lala # this is not a comment";

:global a; # this is a comment

三. 运算符

各个运算符的用法:

- 一元减法。对一个数值做反运算。

- 二进制减,扣除两个数值、两个时间值、两个IP地址或IP地址和其数

值。

! 逻辑非(NOT)。

/ 除法运算符。

. 连接符,连接两个字符串或拼接一个表到其他表上或拼接一个元素给一

个表。

^ 位运算移(XOR)。

~ 按位反, which inverts bits in IP address

* 乘法运算符。

& 位运算与(AND)

&& 逻辑与(AND)

+ 加法运算符。对两个数值、两个时间值或IP地址做加法运算。

< 小于符。返回值为布尔型。

<< 左移运算符。

<= 小于等于符,返回值为布尔型。

> 大于符。返回值为布尔型。

>= 大于等于符,返回值为布尔型。

>> 右移运算符。

| 位运算或(OR)

|| 逻辑或(OR),返回值为布尔型。

注意:这些属于基本的运算,与其他的编程语言的运算符类似。

四. 变量

OS脚本语言支持两种类型的变量,global(全局变量)和local(仅当前

脚本运行的变量),要取变量值时要使用“$”标记符号,但除了set和unset

后面不需要“$”标记外,其他的均应该使用标记。注意,变量应该在脚本中声

明。

本文标签: 命令脚本运算符路由器应该