分类: BSD
2009-10-15 16:17:01
因为下面这个问题
我觉得脚本详细解释也许对大家有用处
决定把以前网络时候找的资料发上来
希望对大家有用处
[apple@sgg-gatewy] > :put (([/ip firewall address-list get 0 address ] & 255.255
.255.0) . \/24)
202.103.24.0/24
这样使用put可以实现把
202.103.24.0
和/24
结合成一个整体
但是怎么样把这个新的值202.103.24.0/24赋给一个变量呢,set不能完成,谁有好的建议或者意见
我准备做的是通过vpn客户端的访问源地址,自动添加/ip route rule里面的数据
现在可以自动把202.103.24.68这样的具体ip自动添加,但是我想根据这个ip然后自动添加一个标准c段
[apple@sgg-gatewy] > :environment print
Global Variables
Local Variables
[apple@sgg-gatewy] > :put (([/ip firewall address-list get 0 address ] & 255.255.255.0) . \/24)
221.232.119.0/24
[apple@sgg-gatewy] > :global testip
[apple@sgg-gatewy] > :put $testip
[apple@sgg-gatewy] > :set testip 202.103.24.0/24
[apple@sgg-gatewy] > :put $testip
202.103.24.0/24
[apple@sgg-gatewy] > :set testip [:put (([/ip firewall address-list get 0 address ] & 255.255.255.0) . \/24)]
221.232.119.0/24
[apple@sgg-gatewy] > :put $testip
[apple@sgg-gatewy] > :set testip {[:put (([/ip firewall address-list get 0 address ] & 255.255.255.0) . \/24)]}
[apple@sgg-gatewy] > :put $testip
[:put (([/ip firewall address-list get 0 address ] & 255.255.255.0) . \/24)]
[apple@sgg-gatewy] > :set testip ([:put (([/ip firewall address-list get 0 address ] & 255.255.255.0) . \/24)])
221.232.119.0/24
[apple@sgg-gatewy] > :put $testip
[apple@sgg-gatewy] > :environment print
Global Variables
Local Variables
testip=
现在的需要解决的是,使用什么方法,或者用别的命令来实现把连接好了的新数字赋给testip这个变量
直接脚本里面写dst-address=[:put (([/ip firewall address-list get 0 address ] & 255.255.255.0) . \/24)]
也是无效的的,测试过了的
用put,直接输出了,不能完成赋值
不用put,不能连接两个字段
大家一起思考思考,先表示感谢
:foreach i in=[/ip firewall address-list find list=telvpn-stable ] do=[/ip route rule add dst-address=(([/ip firewall address-list get $i address ] & 255.255.255.0) . \/24) table=tel action=lookup disabled=no comment="telvpn add by lcnja`s auto script" src-address=0.0.0.0/0]
呵呵,自己搞定了
---------------------------------------------------------------------------------------------------------------------------------------------
RouterOS2.96脚本详解
四种变量
定义全局变量的使用
: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={}里有命令
[/hide]
:local 局部变量的使用
变量的引用
引用变量的值要在变量前面加$
如下
[apple@sgg-gatewy] > :environment print
Global Variables
Local Variables
我们先查看一下环境,显示没有如何的全局或者局部变量
[apple@sgg-gatewy] > :global testip
我们定义一个全局变量
[apple@sgg-gatewy] > /ip firewall address-list print
Flags: X - disabled, D - dynamic
# LIST ADDRESS
0 D telvpn 221.232.119.228
1 telvpn-stable 221.232.119.228
查看一下address-list有没数据,因为我们下面使用序号查询了,所有首先需要使用pr命令显示一下,要不回失败,也可以不按序号查就可以不需要这个
[apple@sgg-gatewy] > :set testip (([/ip firewall address-list get 0 address ] & 255.255.255.0) . \/24)
使用set对testip变量赋值,上面是个复制的脚本来给testip赋值的,当然你用:set testip 3
这样的简单的来给testip赋值也是可以的
[apple@sgg-gatewy] > :environment print
Global Variables
Local Variables
testip=221.232.119.0/24
我们查看环境,现在有了一个变量,并且已经有了数值了
下面使用put来输出变量的值到屏幕
$testip
用这个方式来表示testip变量的数值
[apple@sgg-gatewy] > :put $testip
221.232.119.0/24
[apple@sgg-gatewy] >
其它的以后再发上来,,,有什么意见可以:评论