命令keepass教程

keepass教程  时间:2021-04-05  阅读:()
成都网大科技有限公司www.
mikrotik.
com.
cn-1-Tel:028-87777784版本S1.
2MikroTikScript教程该手册是提供对MikroTikRouterOS嵌入式脚本介绍,主机脚本提供了自动维护路由器任务的功能,通过借助用户自定义发生事件脚本.
对于RouterOS的脚本操作,需要读者有一定的编程知识,而且对RouterOS各个功能熟悉和掌握.
内容如有更新,恕不通知.
第一章RouterOS脚本基本操作在RouterOS中一个脚本配置构成由控制命令和表达式(ICE-internalconsoleexpression内部控制台表达式).
RouterOS操作命令,例如:/ipfirewallfilteraddchain=forwardprotocol=greaction=drop这个是描述在防火墙中过滤gre协议的操作,即通过"/"来达到命令执行的目的.
在脚本ICE表达式前缀需要用":"并能在任何目录路径下操作.
一个事件(event)用来触发脚本执行,在RouterOS下包括:SystemScheduler,TrafficMonitoringTool,NetwatchTool.
功能包需求:system操作路径:/systemscript注:RouterOS2.
9本版与RouterOS3.
0的脚本有一定的区别:1、RouterOS3.
0字符参数后需要使用引号注明如comment="test";name="pppoe-out1";:seti$"tx-current"2、RouterOS3.
0的变量定义不支持"中横杠"的定义如:globaltest-address这样定义在3.
0和4.
0中是非法的脚本在RouterOS中的调用操作路径:/systemscript脚本编写进入script目录下,在script中我们可以定义多条脚本规则,如下图:成都网大科技有限公司www.
mikrotik.
com.
cn-2-Tel:028-87777784我通过script编辑器编辑脚本:成都网大科技有限公司www.
mikrotik.
com.
cn-3-Tel:028-87777784我们可以通过RunScript命令运行当前的脚本,在RunCount中会纪录脚本运行的次数:在Script中我们编辑好脚本后,我们可以通过RouterOS相应的功能调用脚本,并执行这些脚本,如/systemscheduler(计划任务)、/tool中的netwatch、traffic-monitor等.
通常执行脚本在scheduler计划任务中最常用,如这里我们使用了ADSL脚本,需要每间隔1分钟执行一次,我们可以通过scheduler来完成,通过/systemscheduler进入计划任务目录:添加一个名称为adsl的计划任务规则,设置Interval时间1分钟,OnEvent中添加脚本名称:成都网大科技有限公司www.
mikrotik.
com.
cn-4-Tel:028-87777784注:我们也可以在onevent中直接输入脚本的命令:第二章RouterOS脚本语法RouterOS脚本被划分为多个命令行,命令行是一个接一个单元执行直到脚本结束或者直到错误发生.
命令行结构RouterOS控制台是使用下面的命令语法:[前缀][路径]命令[未命名参数][参数=[值]].
.
[参数=[值]][前缀]–如果命令是ICE或者路径通过":"或者"/"字符表示成都网大科技有限公司www.
mikrotik.
com.
cn-5-Tel:028-87777784[路径]–得到操作菜单的路径命令–一个命令获取在指定的菜单路径下[未命名参数]–即事先定义参数,如果命令需要必须指定该参数[参数]–按先后顺序各自定义值命令行结束以";"标识为代表或者换行,在结束命令行有时不需要";"或者换行独立的命令包含(),[]或者{}不需要任何的结尾命令字符,命令结尾取决于脚本的内容:if(true)do={:put"lala"}每条命令行包含其他命令行,起始通过方括号定义"[]":put[/iprouteget[findgateway=1.
1.
1.
1]];注意,上面这条代码包含3条命令行::put/iproutegetfindgateway=1.
1.
1.
1命令行能通过多余一个行的方式建立,可以查看后面的行连接规则.
几种常见的命令实例Prefix(前缀)-指示那一个命令到一个ICE,如:脚本:put或者命令部分从根目录下执行,如"/"[admin@MikroTik]ipfirewallmangle>/ping10.
0.
0.
1Path(路径)–希望到达目录的一个相关路径,如:.
.
filter[admin@MikroTik]ipfirewallmangle>.
.
filterprintAction(执行)–在指定的目录下一个可操作的执行命令,如:add[admin@MikroTik]ipfirewallmangle>/ipfirewallfilteraddchain=forwardaction=dropunnamedparameter(无名参数)-需要通过一些执行和输入固定格式在命令后的执行名称,如10.
0.
0.
1[admin@MikroTik]ipfirewallmangle>/ping10.
0.
0.
1name[=value](参数值)-一个跟在参数名后的各自的值,如:ssid=myssid成都网大科技有限公司www.
mikrotik.
com.
cn-6-Tel:028-87777784/interfacewirelesssetwlan1ssid=myssid事例在下面的例子中解释了控制台内的部分命令:/ping10.
0.
0.
1count=5前缀/执行ping未命名参数10.
0.
0.
1name[=值]count=5.
.
ipfirewallruleinput路径.
.
ipfirewallrule路径项目input:forifrom=1to=10do={:put$i}前缀:执行for未命名参数iname[=值]from=1to=10do={:put$i}/interfacemonitor-trafficether1,ether2,ipip1前缀/路径interface执行monitor-traffic未命名参数ether1,ether2,ipip1变量RouterOS脚本语言支持两种类型的变量,global(系统变量)和local(仅当前脚本运行的变量)取变量值使用'$'标记符号,但除了set和unset后面不需要'$'标记外,其他的都需要使用该标记.
一个变量必须在脚本中首先被声明,下面有四种类型的变量:全局变量–使用global关键字定义,全局变量可用被所有脚本和通过控制台登陆到的同一台路由器调用.
注意,重启后全局变量无法保存.
本地变量–使用local关键字定义,本地变量不能和其他任何脚本或其他控制台登陆的共享.
本地变量值会随脚本执行完成而丢失.
成都网大科技有限公司www.
mikrotik.
com.
cn-7-Tel:028-87777784循环变量–在for和foreach内部定义,这里的变量仅能使用在do命令块中,在命令执行完成后将被删除掉监听变量–一些monitor命令在do中能插入变量或控制命令额.
你分配一个新的变量值使用:set命令,并定义两个为命名的参数:变量名称和新的变量值.
如果一个变量不需要长时间被调用,可以通过:unset命令释放变量.
如果释放一个本地变量,该值会清空.
如果你释放一个全局变量,该值仍然会保存在路由器中,但是在当前脚本无法调用.
注:循环变量会影响到前面已经声明过的同样名称的变量.
事例[admin@MikroTik]iproute>/[admin@MikroTik]>:globalg1"thisisglobalvariable"[admin@MikroTik]>:put$g1thisisglobalvariable[admin@MikroTik]>注释一个注释从"#"号字符开始执行,并结束在一行的结尾,空格或者任何其他标示不允许在#标示之前.
如果"#"字符出现在一个字符串中将不会考虑为一个注释内容.
#thisisacomment(正确注释)#badcomment(错误注释):globala;#badcomment(错误注释):globalmyStr"lala#thisisnotacomment"(不是注释)行连接通过"\"字符可以将两行或者多行连接到一个逻辑行.
一行以反斜杠结束不能进行注释,即一个反斜杠不能连接一个注释.
一个字符串不会继续一个指令.
:if($a=true\and$b=false)do={:put"$a$b";}:if($a=true\#badcomment(错误注释)and$b=false)do={:put"$a$b";}#comment\continued–invalid(语法错误)指令之间的空格空格可以用于分隔指令.
空格必须在两个指令之间仅在他们一系列互相关联的事物解释为一个不通过的指令,例如:成都网大科技有限公司www.
mikrotik.
com.
cn-8-Tel:028-87777784{:localatrue;:localbfalse;#空格不需要:put(a&&b);#空格需要:put(aandb);}空格不允许在'='之间不允许在'from=''to=''step=''in=''do=''else='之间不允许#错误::forifrom=1to=2do={:put$i}#正确::forifrom=1to=2do={:put$i}:forifrom=1to=2do={:put$i}#错误/iprouteaddgateway=3.
3.
3.
3#正确/iprouteaddgateway=3.
3.
3.
3关键字下面的字符是关键字,不能使用着变量和功能名称:andornotin分隔符下面记号作为分隔符的语法:命令替换和返回值一些终端命令是非常有用的,如他们可以输出一个变量值给其他命令.
在RouterOS终端控制中通过命令得到返回值.
返回值不会被显示出来.
从一个命令中得到返回值,应包含在"[]"括号中.
之前执行返回值的命令所得到的值包含在括号中,这个称为命令替换.
成都网大科技有限公司www.
mikrotik.
com.
cn-9-Tel:028-87777784命令产生的返回值,但不限制find,返回一个参考特殊项目ping,返回ping成功的数目,time,返回测量时间长度值,incr和decr,返回新的变量值,add,返回内部最新建立项目编号事例find命令的使用方法:[admin@MikroTik]>/interface[admin@MikroTik]interface>findtype=ether[admin@MikroTik]interface>[admin@MikroTik]interface>:put[findtype=ether]*1,*2[admin@MikroTik]interface>这个方式你能看到内部控制台的项目编号.
自然的,你能使用他们到其他的命令的操作中:[admin@MikroTik]interface>enable[findtype=ether][admin@MikroTik]interface>运算符RouterOS控制台能对数值、时间值、IP地址、字符串和表等做简单的运算.
从一个表达式中得到结果.
命令描述--一元减法.
对一个数值做反运算.
--二进制减,扣除两个数值、两个时间值、两个IP地址或IP地址和其数值.
!
–逻辑非(NOT).
/-除法运算符.
.
–连接符,连接两个字符串或拼接一个表到其他表上或拼接一个元素给一个表.
^-位运算移(XOR).
~-按位反,whichinvertsbitsinIPaddress*-乘法运算符.
&-位运算与(AND)&&-逻辑与(AND)+-加法运算符.
对两个数值、两个时间值或IP地址做加法运算.
-大于符.
返回值为布尔型.
>=-大于等于符,返回值为布尔型.
>>-右移运算符.
|-位运算或(OR)||-逻辑或(OR),返回值为布尔型.
注:当比较两个数组的时注意:如果他们各自元素是相等的,那么两个数组即相等.
成都网大科技有限公司www.
mikrotik.
com.
cn-10-Tel:028-87777784事例:运算符的优先级和求值命令[admin@MikroTik]ipfirewallruleforward>:put(10+1-6*2=11-12=2+(-3)=-1)false[admin@MikroTik]ipfirewallruleforward>:put(10+1-6*2=11-12=(2+(-3)=-1))true[admin@MikroTik]ipfirewallruleforward逻辑非(NOT)[admin@MikroTik]interface>:put(!
true)false[admin@MikroTik]interface>:put(!
(2>3))true[admin@MikroTik]interface>逻辑运算[admin@MikroTik]interface>:put(-11按位反[admin@MikroTik]interface>:put(~255.
255.
0.
0)0.
0.
255.
255[admin@MikroTik]interface>加法运算[admin@MikroTik]interface>:put(3ms+5s)00:00:05.
003[admin@MikroTik]interface>:put(10.
0.
0.
15+0.
0.
10.
0)cannotaddipaddresstoipaddress[admin@MikroTik]interface>:put(10.
0.
0.
15+10)10.
0.
0.
25[admin@MikroTik]interface>减法运算[admin@MikroTik]interface>:put(15-10)5成都网大科技有限公司www.
mikrotik.
com.
cn-11-Tel:028-87777784[admin@MikroTik]interface>:put(10.
0.
0.
15-10.
0.
0.
3)12[admin@MikroTik]interface>:put(10.
0.
0.
15-12)10.
0.
0.
3[admin@MikroTik]interface>:put(15h-2s)14:59:58[admin@MikroTik]interface>乘法运算[admin@MikroTik]interface>:put(12s*4)00:00:48[admin@MikroTik]interface>:put(-5*-2)10[admin@MikroTik]interface>除法运算[admin@MikroTik]interface>:put(10s/3)00:00:03.
333[admin@MikroTik]interface>:put(5/2)2[admin@MikroTik]interface>[admin@MikroTik]>:put(0:0.
10/3)00:00:02[admin@MikroTik]>各种逻辑比较运算[admin@MikroTik]interface>:put(10.
0.
2.
3:put(100000s>27h)true[admin@MikroTik]interface>:put(60s,1d!
=1m,3600s)true[admin@MikroTik]interface>:put(bridge=routing)false[admin@MikroTik]interface>:put(yes=false)false[admin@MikroTik]interface>:put(true=aye)false[admin@MikroTik]interface>逻辑与和或运算成都网大科技有限公司www.
mikrotik.
com.
cn-12-Tel:028-87777784[admin@MikroTik]interface>:put((yes&&yes)||(yes&&no))true[admin@MikroTik]interface>:put((no||no)&&(no||yes))false[admin@MikroTik]interface>按位与、或、异或运算[admin@MikroTik]interface>:put(10.
16.
0.
134&~255.
255.
255.
0)0.
0.
0.
134[admin@MikroTik]interface>移位运算[admin@MikroTik]interface>:put(~((0.
0.
0.
1连接运算符[admin@MikroTik]interface>:put(1.
3)13[admin@MikroTik]interface>:put(1,2.
3)1,2,3[admin@MikroTik]interface>:put(1.
3,4)13,4[admin@MikroTik]interface>:put(1,2.
3,4)1,2,3,4[admin@MikroTik]interface>:put((1.
3)+1)14[admin@MikroTik]interface>数据类型RouterOS区分几种数据类型,字符型、布尔型、数值型、时间型、IP地址、内码和列表.
RouterOS首先会试着将任何值转换为制定的类型.
内部脚本语言弥补了特殊函数之间类型转换的不足.
通过内部的toarray,tobool,toid,toip,tonum,tostr和totime函数每个值转换到相应的列表(list)中,对应为:boolean,internalnumber,IPaddress,number,string或time.
数字类型在内部表示为64位带符号的整型,因此一个数字类型值变量可用长度从-9223372036854775808到9223372036854775807.
同样可用输入十六进制的数值,在前面加入0x,例如:成都网大科技有限公司www.
mikrotik.
com.
cn-13-Tel:028-87777784[admin@MikroTik]>:globalMyVar0x10[admin@MikroTik]>:put$MyVar16[admin@MikroTik]>列表通过逗号来区分值的次序,在空白出使用逗号间隔方式部推荐使用,因为这会让控制终端无法识别字符的边境.
Boolean型的值为true或false.
控制终端判断true为"yes",false为"no".
时间间隔可以输入HH:MM:SS例如:[admin@MikroTik]>:put01:12:1.
0101:12:01.
010[admin@MikroTik]>或者通过累计数字,具体指明单位时间的标记(d对应days,h对应hours,m对应minutes,s对应seconds,以及ms对应milliseconds)例如:[admin@MikroTik]>:put2d11h122d11:00:12[admin@MikroTik]>时间单位:d,day,days–一天,或者24小时h,hour,hours–一小时m,min–一分钟s–一秒ms–一毫秒,等同0.
001秒控制终端同样接受时间为小数点的形式:[admin@MikroTik]>:put0.
1day1.
2s02:24:01.
200[admin@MikroTik]>命令参考文档RouterOS有多个嵌入式的控制终端命令和表达式ICE不依赖于当前操作目录.
这些命令不能直接改变配置,但他们可以做日常的维护工作.
所有ICE可以通过在操作符输入":"后敲击""显示出.
例如:[admin@MikroTik]>:beepexecutegloballistpicktimetoiptypeof成都网大科技有限公司www.
mikrotik.
com.
cn-14-Tel:028-87777784delayfindiflocalputtoarraytonumwhiledoforledlogresolvetobooltostrenvironmentforeachlennothingsettoidtotime[admin@MikroTik]>命令属性beep–通过PC内置的蜂鸣器或者扬声器发出一个指定length(时间长度)的frequencyHz(频率Hz).
输入参数frequency(整型;默认:1000)–信号频率大小用单位Hzlength(时间;默认:100ms)–信号长度[admin@MikroTik]>:beeplength=2sfrequency=10000[admin@MikroTik]>delay–在一个给定的时间长度不做任何操作输入参数delay-time(时间)–等待的时间长度omitted–无限制延迟do–反复执行命令直到获取一个适当的值.
如果没有参数获取,do只执行有效操作一次,其中不会有什么作用.
如果一逻辑条件被指定到while参数种,将会在命令执行后作判断,在该条件判断中为true,do语句会被一次一次的执行直到满足false条件,if参数,在做后面语句的任何操作时判断一次,如果false不会执行任何的操作输入参数unnamed(文本)–反复执行的操作while(yes|no)–条件语句,这是判断每一次执行后的执行结果if(yes|no)–条件语句,这是判断一次执行之前的声明[admin@MikroTik]>{:globali10;:do{:put$i;:seti($i-1);}\\.
.
.
while(($i0));:unseti;}10987654321[admin@MikroTik]>environmentprint–显示关于当前变量的初始化情况.
所有在系统中的全局变量globalvariables被以标题为GlobalVariables下列出.
所有变量插入当前脚本(通过:local、通过:for或者:foreach)被以标题为LocalVariables下列出.
创建变量并显示出他们的列表:[admin@MikroTik]>:localA"Thisisalocalvariable"成都网大科技有限公司www.
mikrotik.
com.
cn-15-Tel:028-87777784[admin@MikroTik]>:globalB"Thisisaglobalone"[admin@MikroTik]>:environmentprintGlobalVariablesB=ThisisaglobaloneLocalVariablesA=Thisisalocalvariable[admin@MikroTik]>find–查找字符串内的一个字符或者一个元素在项目内的值,根据变量类型并返回一个变量的位置.
输入参数unnamed(文本|列表)–搜索字符或者字符列表值,并执行相关的操作unnamed(文本)–字符的搜索unnamed(整型)–搜索的起始位置,或搜索到目标返回的位置[admin@MikroTik]interfacepppoe-server>:put[:find"13sdf1sdfss1sfsdf324333"]0[admin@MikroTik]interfacepppoe-server>:put[:find"13sdf1sdfss1sfsdf324333"3]1[admin@MikroTik]interfacepppoe-server>:put[:find"13sdf1sdfss1sfsdf324333"33]17[admin@MikroTik]interfacepppoe-server>:put[:find"1,1,1,2,3,3,4,5,6,7,8,9,0,1,2,3"3]4[admin@MikroTik]interfacepppoe-server>:put[:find"1,1,1,2,3,3,4,5,6,7,8,9,0,1,2,3"33]4[admin@MikroTik]interfacepppoe-server>:put[:find"1,1,1,2,3,3,4,5,6,7,8,9,0,1,2,3"34]5[admin@MikroTik]interfacepppoe-server>:put[:find"1,1,1,2,3,3,4,5,6,7,8,9,0,1,2,3"35]15[admin@MikroTik]for–执行所给定的数次反复循环的命令,通过from和to设置起始和结算参数.
输入参数unnamed(名称)–循环计数器变量名称.
from(整型)–循环起始的变量值to(整型)–循环结束的变量值step(整型;默认:1)–递增变量.
在循环起始到结束中间每循环一次的间距变量do(文本)–执行包含在内的命令[admin@MikroTik]>:forifrom=1to=100step=37do={:put($i1000/$i)}1-100038-2675-13[admin@MikroTik]>foreach–执行所提供在列表中的每一个元素成都网大科技有限公司www.
mikrotik.
com.
cn-16-Tel:028-87777784输入参数unnamed(名称)-循环计数器变量名称.
in(列表)–变量列表范围或路径do(text)-执行包含在内的命令显示出一个interface中获得列表各自的IP地址:foreachiin=[/interfacefindtype=ether]\\.
.
.
do={:putinterfaceget$iname]);\\.
.
.
:foreachjin=[/ipaddressfindinterface=$i]\.
.
.
do={:putipaddressget$jaddress])}}+--ether1|`--1.
1.
1.
3/24|`--192.
168.
50.
1/24|`--10.
0.
0.
2/24+--ether2|`--10.
10.
0.
2/24[admin@MikroTik]>global–声明全局变量输入参数unnamed(名称)–变量名称unnamed(文本)–值,分配给变量的内容[admin@MikroTik]>:globalMyString"Thisisastring"[admin@MikroTik]>:globalIPAddr10.
0.
0.
1[admin@MikroTik]>:globaltime0:10[admin@MikroTik]>:environmentprintGlobalVariablesIPAddr=10.
0.
0.
1time=00:10:00MyString=ThisisastringLocalVariables[admin@MikroTik]>if–条件语句.
如果一个逻辑判断为真,这时执行do分程序块中的命令,否则选择else分程序块中的执行.
输入参数unnamed(yes|no)–逻辑条件语句,在执行之后声明内容前判断一次do(文本)–如果if语句判断为真,在这个分程序块的命令会被执行.
else(文本)-如果if语句判断为假,在这个分程序块的命令会被执行.
通过if语句检查firewall中是否有任何规则被添加[admin@MikroTik]>:if([:len[/ipfirewallfilterfind]]>0)do={:puttrue}else={:putfalse}true[admin@MikroTik]>检查网关是否能到达.
在这个事例中网关地址为10.
0.
0.
254[admin@MikroTik]>:if([/ping10.
0.
0.
254count=1]=0)do{:put"gatewayunreachable"}10.
0.
0.
254pingtimeout1packetstransmitted,0packetsreceived,100%packetlossgatewayunreachable成都网大科技有限公司www.
mikrotik.
com.
cn-17-Tel:028-87777784[admin@MikroTik]>led–允许控制系统内嵌的LED(发光二极管).
这个命令仅能在RouterBOARD平台与安装routerboard或rb500功能包.
LED数量根据RouterBOARD型号不同而定.
输入参数led1(yes|no)–控制第一个LEDled2(yes|no)-控制第二个LEDled3(yes|no)-控制第三个LEDled4(yes|no)-控制第四个LEDlength(time)–具体指定操作的长度omitted–LED长亮打开LED2和LED3时间为5秒[admin@MikroTik]>:ledled2=yesled3=yeslength=5slen–返回在字符串的字符数或列表中的元素数目输入参数unnamed(name)–返回字符串或列表的长度[admin@MikroTik]>:put[:lengvejimezyfopmekun]17[admin@MikroTik]>:put[:lengve,jim,ezy,fop,mek,un]6[admin@MikroTik]>list–显示一个能获得给定匹配关键字的列表输入参数unnamed(文本)–第一个搜索关键字unnamed(文本)-第二个搜索关键字unnamed(文本)-第三个搜索关键字显示控制台命令下含有hotspot,add和user部分的命令与路径[admin@MikroTik]>:listuserhotspot"add"Listofconsolecommandsunder"/"matching"user"and"hotspot"and"add":iphotspotprofileaddname=hotspot-address=dns-name=\\.
.
.
html-directory=rate-limit=http-proxy=smtp-server=\\.
.
.
login-by=http-cookie-lifetime=ssl-certificate=split-user-domain=\\.
.
.
use-radius=radius-accounting=radius-interim-update=copy-from=iphotspotuseraddserver=name=password=address=mac-address=\\.
.
.
profile=routes=limit-uptime=limit-bytes-in=limit-bytes-out=\\.
.
.
copy-from=comment=disabled=iphotspotuserprofileaddname=address-pool=session-timeout=\\.
.
.
idle-timeout=keepalive-timeout=status-autorefresh=\\.
.
.
shared-users=rate-limit=incoming-filter=outgoing-filter=\\.
.
.
incoming-mark=outgoing-mark=open-status-page=on-login=on-logout=copy-from=[admin@MikroTik]>local–声明本地变量输入参数unnamed(名称)–变量名称unnamed(文本)–值,分配给变量的内容成都网大科技有限公司www.
mikrotik.
com.
cn-18-Tel:028-87777784[admin@MikroTik]>:localMyString"Thisisastring"[admin@MikroTik]>:localIPAddr10.
0.
0.
1[admin@MikroTik]>:localtime0:10[admin@MikroTik]>:environmentprintGlobalVariablesLocalVariablesIPAddr=10.
0.
0.
1time=00:10:00MyString=Thisisastring[admin@MikroTik]>log–通过参数添加一个指定的信息到系统logs中.
输入参数unnamed(名称)–记录日志的功能名称unnamed(文本)–被记录的文本信息发送信息到info日志中[admin@MikroTik]>:loginfo"VeryGoodthinghappened.
Wehavereceivedourfirstpacket!
"[admin@MikroTik]>/logprintfollow.
.
.
19:57:46script,infoVeryGoodthinghappened.
Wehavereceivedourfirstpacket!
.
.
.
nothing–没有任何操作,并返回值类型为"nothing".
在条件语句中nothing等同"false"从一个字符串中挑选一个不存在的符号[admin@MikroTik]>:localstringqwerty[admin@MikroTik]>:if([:pick$string10]=[:nothing])do={{.
.
.
:put"pickandnothingcommandsreturnthesamevalue"}pickandnothingcommandsreturnthesamevalue[admin@MikroTik]>pick–根据输入的值返回一个元素长度或一个子串值输入参数unnamed(文本|列表)–字符串或值列表的来源unnamed(整型)–字符串中子串的起始位置unnamed(整型)-字符串中子串的结束位置[admin@MikroTik]>:seta1,2,3,4,5,6,7,8[admin@MikroTik]>:put[:len$a]8[admin@MikroTik]>:put[:pick$a]1[admin@MikroTik]>:put[:pick$a04]1,2,3,4[admin@MikroTik]>:put[:pick$a24]3,4[admin@MikroTik]>:put[:pick$a2]3[admin@MikroTik]>:put[:pick$a51000000]6,7,8[admin@MikroTik]>:setaabcdefghij成都网大科技有限公司www.
mikrotik.
com.
cn-19-Tel:028-87777784[admin@MikroTik]>:put[:len$a]10[admin@MikroTik]>:put[:pick$a]a[admin@MikroTik]>:put[:pick$a04]abcd[admin@MikroTik]>:put[:pick$a24]cd[admin@MikroTik]>:put[:pick$a2]c[admin@MikroTik]>:put[:pick$a51000000]fghijput–回复所提供的变量值到控制台输入参数unnamed(文本)–需要回复的文本信息显示ether1接口的MTU值[admin@MikroTik]>:put[/interfacegetether1mtu]1500[admin@MikroTik]>resolve–解析DNS域名并返回主机的IP地址,首先需要配置好路由器的DNS参数(/ipdns目录下)输入参数unnamed(文本)–需要解析IP的主机域名DNS配置和resolve命令事例[admin@MikroTik]iproute>/ipdnssetprimary-dns=159.
148.
60.
2[admin@MikroTik]iproute>:put[:resolve"www.
example.
com"]192.
0.
34.
166set–分配一个新值给变量输入参数unnamed(name)–变量名称unnamed(text)–新的变量值通过/iproutefinddst0.
0.
0.
0的命令,查找路由表中dst-address返回值为0.
0.
0.
0的值,这个值通常是路由器的默认网关,当查到后通过/iprouteset命令修改网关地址为10.
0.
0.
217[admin@MikroTik]>/iprouteset[/iproutefinddst"0.
0.
0.
0"]gateway10.
0.
0.
1[admin@MikroTik]>time–计算出所给命令的执行时间总长度输入参数unnamed(text)–控制台命令测量执行时间计算出解析www.
example.
com需要的时间[admin@MikroTik]>:put[:time[:resolve"www.
example.
com"]]00:00:00.
006[admin@MikroTik]>成都网大科技有限公司www.
mikrotik.
com.
cn-20-Tel:028-87777784while–反复执行给定的控制命令,直到逻辑条件为true输入参数unnamed(yes|no)–条件,在每一次执行前判断声明范围do(文本)–反复执行的控制命令[admin@MikroTik]>:seti0;:while($iTypeof–判断变量类型,返回值num、str、nothing、time、ip、bool输入参数unnamed(name)–变量名称判断一个变量的类型[admin@MikroTik]>:globala192.
168.
1.
1[admin@MikroTik]>:put[:typeof$a]ip[admin@MikroTik]>:globalb[admin@MikroTik]>:put[:typeof$b]nothing第三章Scripte事例自动创建多条策略在firewallinput规则中通过脚本添加接受从1.
1.
1.
1开始到1.
1.
1.
100地址的数据包,即100条规则::forefrom1to100do={/ipfirewallfilteadd\chain=inputsrc-address=("1.
1.
1.
".
$e)}我们使用类似的脚本编写,添加200个IP地址的流量规则::forefrom1to200do={/queuesimpleaddtarget-addresses=("192.
168.
1.
".
$e)max-limit=256000/512000}成都网大科技有限公司www.
mikrotik.
com.
cn-21-Tel:028-87777784获取bandwidth测试参数这个事例描述的是如果获取bandwidth-test命令的结果.
在事例中使用global(全局变量)另外一个脚本在同一时间运行,并获取当前的TX参数.
:globali/toolbandwidth-test1.
1.
1.
1direction=transmitduration=14sdo={:if($status="running")do={:seti$"tx-current"}}}解析域名IP地址,并添加入address-list这个实例对一些域名有多IP地址的网站进行解析,我们可以通过设置计划任务每间隔一个周期执行脚本,比如netbar.
qq.
com进行解析,每次解析对比ipfirewalladdress-list是否存在相同IP,如果没有相同IP地址,则添加入address-list.
:globala[:resolvenetbar.
qq.
com]:globalb:foreachiin=[/ipfirewalladdress-listfindlist=qqgame]do={:if($a=[/ipfirewalladdress-listget$iaddress])do={:setb1}else={:setb0}}:if($b=0)do={/ipfirewalladdress-listaddlist=qqgameaddress=$a}使用注释如果有时候在一个规则中与其他规则许多属性相同,指定的参数就无法从规则中获取(例如:firewall或者routing规则等).
这里我们可以通过编辑注释来解决.
I假设,我们需要从ipfirewallnat中修改端口映射的目标地址,目标IP地址是218.
16.
18.
12,而我们做了多条端口映射规则,为方便查找和修改,我们可以通过注释标记.
[admin@MikroTik]ipfirewallnat>set0comment=dst1现在我们看看一个具体的应用实例,ADSL的IP地址变动后,我们修改端口映射的IP地址:成都网大科技有限公司www.
mikrotik.
com.
cn-22-Tel:028-87777784:globaladsl"pppoe-out1"#定义ADSL拨号接口名称变量:pppoe-out1:globaladsllast#之前的ADSLIP地址变量:globaladslip[/ipaddressget[/ipaddressfindinterface=$adsl]address]//获取当前ADSLip地址:if([:typeof$adsllast]=nil)do={:setadsllast0.
0.
0.
0/0}#判断之前的ADSLIP地址是否为空,如果为空设置一个0.
0.
0.
0/0的IP地址:if([:typeof$adsl]=nil)do={:loginfo("Noipaddresspresenton".
$adsl.
",pleasecheck.
")#判断当前ADSLIP是否为空,否则执行else的操作}else={:if($adslip!
=$adsllast)do={:loginfo[/ipfirewallnatset[/ipfirewallnatfindcomment="dst1"]dst-address=$adslip]#判断当前IP和之前IP是否相同,如果不同便修改dst-address的IP地址:loginfo"ADSLIP:UPDATE!
":setadsllast$adslip#交换IP地址}else={:loginfo"ADSLIP:Nochange"}}在这个事例中,我们可以看到通过添加注释,为编写脚本判断正确的规则.
DDNS动态域名配置这里我们来看看,当我们使用ADSL时由于重新拨号或者租约到期,IP地址是动态变化的,而又需要让外网的客户通过动态域名来访问我们的内部服务器,这里我们需要使用到DDNS的动态域名脚本,注意RouterOS支持的动态域名服务器只有www.
changeip.
com:loginfo"DDNS:Begin"#在log日志中显示DDNS开始运行:globalddnsuser"ddns.
test.
com"#定义ddnsuser用户名变量:globalddnspass"cdnat"#定义ddnspass密码变量:globalddnshost"ddns.
test.
com"#定义ddnshost主机:globalddnsinterface"pppoe-out1"#定义ADSL拨号接口,用户获取IP:globalddnsipt#定义一个零时存储的IP地址变量:globalddnsip[/ipaddressget[/ipaddressfindinterface=$ddnsinterface]address]#根据ADSL拨号的接口获取IP地址,并分配给ddnsip成都网大科技有限公司www.
mikrotik.
com.
cn-23-Tel:028-87777784:if([:typeof$ddnslastip]=nil)do={:globalddnslastip0.
0.
0.
0/0}#查看ddnslastip变量是否为空,如果为空则分配0.
0.
0.
0/0地址:if([:typeof$ddnsip]=nil)do={:loginfo("DDNS:Noipaddresspresenton".
$ddnsinterface.
",pleasecheck.
")#查看ddns-ip变量是否为空,如果为空则在log中提示未获取IP}else={:if($ddnsip!
=$ddnslastip)do={#否则执行新IP与以前的IP地址对比:setddnsipt[:pick$a0([:len$a]-3)]#去掉IP地址后面的子网掩码,并将修改后的IP分配给ddns-ipt变量:loginfo[/ipfinatset[/ipfinatfindcomment=s1]to-address$ddnsipt]#根据注释名称修改相应的nat规则:loginfo[/ipfinatset[/ipfinatfindcomment=a1]dst-address$ddnsip]:loginfo[/ipfinatset[/ipfinatfindcomment=a2]dst-address$ddnsip]:loginfo[/ipfinatset[/ipfinatfindcomment=a3]dst-address$ddnsip]:loginfo[/ipfinatset[/ipfinatfindcomment=a4]dst-address$ddnsip]:loginfo[/ipfinatset[/ipfinatfindcomment=a5]dst-address$ddnsip]:loginfo[/ipfinatset[/ipfinatfindcomment=a6]dst-address$ddnsip]:loginfo"DDNS:SendingUPDATE!
"#log中提示DDNS更新:loginfo[/tooldns-updatename=$ddnshostaddress=[:pick$ddnsip0[:find$ddnsip"/"]]key-name=$ddnsuserkey=$ddnspass]#发送最新的IP地址,到DDNS服务器:globalddnslastip$ddnsip#将新老IP地址交换}else={:loginfo"DDNS:Nochange"}}:loginfo"DDNS:End"相同ADSL网关脚本修改注:该脚本适用于3.
0版本,4.
0在相同ADSL网关下可以不同脚本实现操作.
当我们使用到多线路的ADSL时,可能会遇到这些ADSL的网关是相同的,因为RouterOS只能识别不同网关的策略路由,因此在多ADSL相同网关的情况下,我们可以通过隧道协议的特点,用本地IP地址做为路由器的网关.
假设我们有2条ADSL,分别为pppoe-out1和pppoe-out2,做ADSL操作的时候需要将动态获取的ADSL地址修改为静态,通过在/ipaddress中使用copy命令操作,如下图成都网大科技有限公司www.
mikrotik.
com.
cn-24-Tel:028-87777784上图获取到的IP地址是222.
121.
53.
8,通过copy命令修改Network和Boradcast地址也为222.
121.
53.
8,如下:将下面2条ADSL的IP地址都修改为静态的,并给静态的IP地址标记上注释1和2:成都网大科技有限公司www.
mikrotik.
com.
cn-25-Tel:028-87777784我们将网络的内的用户平均分组为A和B,A组走1号ADSL线路,而B组走2号ADSL线路.
1号ADSL设置为默认路由,即RouterOS的默认网关出口,这里我们将2号线作为用户B组的策略路由,我们在ipfirewallmangle中配置,定义chain=preroutingsrc-address=192.
168.
10.
2-192.
168.
10.
128action=mark-routingnew-routing-mark=B这里我们只需要定义B组用户,A组用户只需要走1号ADSL的默认网关,定义B组用户走2号线路的ADSL配置路由,这里我们设置1号ADSL的IP222.
121.
53.
8为默认网关,即ADSL的默认网关.
2号线路的ADSL我们用222.
121.
53.
10,做为B组线路的网关,并在iproute中添加routing-mark的标记成都网大科技有限公司www.
mikrotik.
com.
cn-26-Tel:028-87777784为pppoe-out2做注释标记2,配置完成后的路由,B组用户通过22.
121.
53.
10的网关出去,剩下的用户通过默认网关如下图接下来我们需要通过脚本,来判断1和2号线ADSL的IP地址是否变动,如果IP变动后用脚本会自动修改变动的1和2号线ADSL参数:locallastaddress:localnewaddress:localstatus:setstatus[/interfaceget[/interfacefindname="pppoe-out1"]running]:if($status=true)do={:setnewaddress[/ipaddressget[/ipaddressfinddynamic=yesinterface="pppoe-out1"]address]:setnewaddress[:pick$newaddress0[:find$newaddress"/"]]成都网大科技有限公司www.
mikrotik.
com.
cn-27-Tel:028-87777784:setlastaddress[/ipaddressget[/ipaddressfinddynamic=nointerface="pppoe-out1"]address]:setlastaddress[:pick$lastaddress0[:find$lastaddress"/"]]:if($lastaddress!
=$newaddress)do={:loginfo[/ipaddressset[/ipaddressfindcomment="1"]address=$newaddressnetwork=$newaddressbroadcast=$newaddress]:loginfo[/iprouteset[/iproutefindcomment="1"]gateway=$newaddress]}}:setstatus[/interfaceget[/interfacefindname="pppoe-out2"]running]:if($status=true)do={:setnewaddress[/ipaddressget[/ipaddressfinddynamic=yesinterface="pppoe-out2"]address]:setnewaddress[:pick$newaddress0[:find$newaddress"/"]]:setlastaddress[/ipaddressget[/ipaddressfinddynamic=nointerface="pppoe-out2"]address]:setlastaddress[:pick$lastaddress0[:find$lastaddress"/"]]:if($lastaddress!
=$newaddress)do={:loginfo[/ipaddressset[/ipaddressfindcomment="2"]address=$newaddressnetwork=$newaddressbroadcast=$newaddress]:loginfo[/iprouteset[/iproutefindcomment="2"]gateway=$newaddress]}}通过声控判断WLAN信号强度我们可以使用RouterOS的脚本beep语句,配合循环操作,来判断WLAN的信号强度,该脚本主要应用在点对点的WLAN搜索信号使用.
下面是ap-bridge使用的声控信号强度脚本,注意ap-bridge使用的时候需要填写对方无线模块的MAC地址,才能获取信号强度:localbeep"10ms";:locals85"1350ms";:locals80"850ms";:locals75"650ms";:locals70"450ms";:locals65"350ms";:locals60"250ms";:locals55"200ms";:locals50"150ms";:locals45"100ms";:locals40"60ms";:locals20"20ms";:globalfr:forifrom=1to=50do={:setfr[/interfacewirelessregistration-tableget[/interfacewirelessregistration-tablefindradio-name="000C4223D23E"]signal-strength]成都网大科技有限公司www.
mikrotik.
com.
cn-28-Tel:028-87777784:setfr[:pick$fr0[:find$fr"d"]]:if($fr-88)do={:forifrom=1to=2do={:beeplength=$beep;:delay$s85;}}:if($fr-85)do={:forifrom=1to=3do={:beeplength=$beep;:delay$s80;}}:if($fr-80)do={:forifrom=1to=3do={:beeplength=$beep;:delay$s75;}}:if($fr-75)do={:forifrom=1to=6do={:beeplength=$beep;:delay$s70;}}:if($fr-70)do={:forifrom=1to=8do={:beeplength=$beep;:delay$s65;}}:if($fr-65)do={:forifrom=1to=11do={:beeplength=$beep;:delay$s60;}}:if($fr-60)do={:forifrom=1to=13do={:beeplength=$beep;:delay$s55;}}:if($fr-55)do={:forifrom=1to=18do={:beeplength=$beep;:delay$s50;}}:if($fr-50)do={:forifrom=1to=25do={:beeplength=$beep;:delay$s45;}}:if($fr-45)do={:forifrom=1to=31do={:beeplength=$beep;:delay$s40;}}:if($fr-40)do={:forifrom=1to=40do={:beeplength=$beep;:delay$s20;}}}}该脚本在信号强度越强的情况下,发声频率越高下面是Station-wds使用的声控信号强度脚本::localbeep"10ms";:locals85"1350ms";:locals80"850ms";:locals75"650ms";:locals70"450ms";:locals65"350ms";成都网大科技有限公司www.
mikrotik.
com.
cn-29-Tel:028-87777784:locals60"250ms";:locals55"200ms";:locals50"150ms";:locals45"100ms";:locals40"60ms";:locals20"20ms";:forifrom=1to=100do={/interfacewirelessmonitorwlan1interval=1do={:if($"signal-strength"-88)do={:forifrom=1to=2do={:beeplength=$beep;:delay$s85;}}:if($"signal-strength"-85)do={:forifrom=1to=3do={:beeplength=$beep;:delay$s80;}}:if($"signal-strength"-80)do={:forifrom=1to=4do={:beeplength=$beep;:delay$s75;}}:if($"signal-strength"-75)do={:forifrom=1to=6do={:beeplength=$beep;:delay$s70;}}:if($"signal-strength"-70)do={:forifrom=1to=8do={:beeplength=$beep;:delay$s65;}}:if($"signal-strength"-65)do={:forifrom=1to=10do={:beeplength=$beep;:delay$s60;}}:if($"signal-strength"-60)do={:forifrom=1to=12do={:beeplength=$beep;:delay$s55;}}:if($"signal-strength"-55)do={:forifrom=1to=16do={:beeplength=$beep;:delay$s50;}}:if($"signal-strength"-50)do={:forifrom=1to=24do={:beeplength=$beep;:delay$s45;}}:if($"signal-strength"-45)do={:forifrom=1to=34do={:beeplength=$beep;:delay$s40;}}:if($"signal-strength"-40)do={:forifrom=1to=48do={:beeplength=$beep;:delay$s20;}}}}声音控制脚本警报声成都网大科技有限公司www.
mikrotik.
com.
cn-30-Tel:028-87777784:forifrom=1to=3step=1do={:beepfrequency=550length=494ms;:delay494ms;:beepfrequency=400length=494ms;:delay494ms;}电话铃声:forifrom=1to=10step=1do={:beepfrequency=1195length=22ms;:delay22ms;:beepfrequency=2571length=22ms;:delay22ms;}Coo发声:forifrom=0to=150step=10do={:beepfrequency=(1295-i)length=22ms;:delay22ms;:beepfrequency=(1095+i)length=22ms;:delay22ms;}操作成功发声:beepfrequency=523length=200ms;:delay1000ms;:beepfrequency=523length=200ms;:delay1000ms;:beepfrequency=523length=200ms;:delay1000ms;:beepfrequency=659length=700ms;:delay700ms;:beepfrequency=784length=500ms;:delay500ms;:beepfrequency=523length=200ms;:delay1000ms;:beepfrequency=523length=200ms;成都网大科技有限公司www.
mikrotik.
com.
cn-31-Tel:028-87777784:delay1000ms;:beepfrequency=523length=200ms;:delay1000ms;:beepfrequency=659length=700ms;:delay700ms;:beepfrequency=784length=500ms;:delay800ms;:beepfrequency=784length=400ms;:delay400ms;:beepfrequency=884length=200ms;:delay200ms;:beepfrequency=784length=200ms;:delay200ms;:beepfrequency=687length=200ms;:delay200ms;:beepfrequency=659length=200ms;:delay200ms;:beepfrequency=579length=200ms;:delay200ms;:beepfrequency=519length=400ms;:delay400ms;

MechanicWeb免费DirectAdmin/异地备份

MechanicWeb怎么样?MechanicWeb好不好?MechanicWeb成立于2008年,目前在美国洛杉矶、凤凰城、达拉斯、迈阿密、北卡、纽约、英国、卢森堡、德国、加拿大、新加坡有11个数据中心,主营全托管型虚拟主机、VPS主机、半专用服务器和独立服务器业务。MechanicWeb只做高端的托管vps,这次MechanicWeb上新Xeon W-1290P处理器套餐,基准3.7GHz最高...

HostYun 新增美国三网CN2 GIA VPS主机 采用美国原生IP低至月15元

在之前几个月中也有陆续提到两次HostYun主机商,这个商家前身是我们可能有些网友熟悉的主机分享团队的,后来改名称的。目前这个品牌主营低价便宜VPS主机,这次有可以看到推出廉价版本的美国CN2 GIA VPS主机,月费地址15元,适合有需要入门级且需要便宜的用户。第一、廉价版美国CN2 GIA VPS主机方案我们可看到这个类型的VPS目前三网都走CN2 GIA网络,而且是原生IP。根据信息可能后续...

RAKsmart裸机云/云服务器/VPS全场7折,独立服务器限量秒杀$30/月起

适逢中国农历新年,RAKsmart也发布了2月促销活动,裸机云、云服务器、VPS主机全场7折优惠,新用户注册送10美元,独立服务器每天限量秒杀最低30.62美元/月起,美国洛杉矶/圣何塞、日本、香港站群服务器大量补货,1-10Gbps大带宽、高IO等特色服务器抄底价格,机器可选大陆优化、国际BGP、精品网及CN2等线路,感兴趣的朋友可以持续关注下。裸机云新品7折,秒杀产品5台/天优惠码:Bare-...

keepass教程为你推荐
sherylsandberg这个文章什么意思 给个翻译好吗 谢谢了安徽汽车网在安徽那个市的二手车最好?haole018.com为什么www.haole008.com在我这里打不开啊,是不是haole008换新的地址了?www.7788dy.comwww.tom365.com这个免费的电影网站有毒吗?www.zjs.com.cn中通快递投诉网站网址是什么?百度指数词什么是百度指数抓站工具公司网站要备份,谁知道好用的网站抓取工具,能够抓取bbs论坛的。推荐一下,先谢过了!javbibinobibi的中文意思是?33tutu.comDnf绝望100鬼泣怎么过woshiheida这个左下角水印woshiheida的gif出处在哪呢?急!!!!!
虚拟主机试用30天 国外vps主机 中文域名交易中心 新网域名管理 net主机 wordpress主机 naning9韩国官网 debian7 免费ddos防火墙 河南m值兑换 域名和空间 免费申请网站 根服务器 申请网站 腾讯总部在哪 空间登录首页 镇江高防 SmartAXMT800 ncp是什么 百度新闻源申请 更多