找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 16680|回复: 23

[脚本] Ros脚本 在命令行下可以运行放到script list却无法运行

[复制链接]
发表于 2008-3-13 22:55:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
/ppp act pri ser pppoe w
:set num [/ppp act pri ser pppoe cou]
:for ccc from 0 to $num do={:set name [/ppp act get $ccc name];:set mac [/ppp act get $ccc caller-id];:if ([/ppp se get $name caller-id]="") do {:put $name;:put $mac;/ppp se set $name caller-id="$mac"}}

上面的代码 我在命令行下试过了可以正确的运行 分了3段输入``/ppp act pri ser pppoe w 和:set num [/ppp act pri ser pppoe cou] 各一段最后就是那个循环了`` :put 命令显示出来的也正确`` 脚本嘛 当然要放script list里运行才方便``
可是放上去点run后却没反映``显示运行次数的那栏也始终为0````找了许多资料都没有找到相关的``帮忙看下问题出在那里哈`` 谢谢先

[ 本帖最后由 arica1985e 于 2008-3-14 14:39 编辑 ]
routeros
 楼主| 发表于 2008-3-13 22:56:17 | 显示全部楼层
沙发```自己顶下``嘿嘿
routeros
回复

使用道具 举报

 楼主| 发表于 2008-3-14 14:38:38 | 显示全部楼层
各位老大`` 进来看看吧~~~
routeros
回复

使用道具 举报

发表于 2008-3-14 15:25:43 | 显示全部楼层
首先,你看看脚本能不能运行,运行的话计数器会增加的,如果不能运行的话,肯定是有语法错误,那把全部代码复制到终端里面运行看看,会提示你那行有错误的

其次,如果能运行但得不到正确结果的话,你要看脚本的算法是不是恰当,逐条检查结果,就知道哪里有问题了

另外,put不能用于脚本里,只能在终端中使用,脚本里面要显示中间结果,最好用:log error 语句,然后去log里面看看是不是得到正确的结果
routeros
回复

使用道具 举报

发表于 2008-3-14 16:40:05 | 显示全部楼层
好像pr也不能用于脚本里,只能在终端中使用...
routeros
回复

使用道具 举报

发表于 2008-3-15 01:24:58 | 显示全部楼层
楼主的脚本好像是自动绑定mac吧...
用:foreach i in 的函数即可....
routeros
回复

使用道具 举报

 楼主| 发表于 2008-3-17 14:06:56 | 显示全部楼层
谢谢` 各位大哥的详细解答``` 我试试去`` ^-^
routeros
回复

使用道具 举报

 楼主| 发表于 2008-3-17 14:15:49 | 显示全部楼层
:foreach i in=[/ppp se find caller-id="" dis="no"] do={
:set name [/ppp se get $i name];
:if  (/ppp act find name="$name") do {
:set mac [/ppp act get [find name="$name"] caller-id];
/ppp se set $name caller-id="$mac"}
}

这样写可以么``


呵呵 之前不知道怎么多了个echo```dos里面的东西都出来了`` 大概本来是想写else吧```

[ 本帖最后由 arica1985e 于 2008-3-18 18:31 编辑 ]
routeros
回复

使用道具 举报

 楼主| 发表于 2008-3-17 14:26:24 | 显示全部楼层
为了写这脚本 在baidu找了不少资料``不过都很少``不知道那为朋友有详细点的ros脚本方面的资料```http://bbs.routerclub.com/redire ... 0668&ptid=29682 这的也看过了 好像少了点`` 至今还不知道 "[ ] {} ().."等符号的要用在什么地方 我比较笨``就看别人的脚本 比较下 看有没什么规律呵呵``
routeros
回复

使用道具 举报

发表于 2008-3-17 23:56:27 | 显示全部楼层
echo是干什么的???
routeros
回复

使用道具 举报

 楼主| 发表于 2008-3-18 18:32:11 | 显示全部楼层
   
之前不知道怎么多了个echo```dos里面的东西都出来了`` 大概本来是想写else吧```
routeros
回复

使用道具 举报

 楼主| 发表于 2008-3-19 23:48:43 | 显示全部楼层
routeros
回复

使用道具 举报

发表于 2008-3-20 00:24:41 | 显示全部楼层
给你一个我之前写的自动绑定mac地址的脚本吧
#######################################################
#
#最后修改时间:2007.11.24
#修改人:linyi
#e-mail: nnlinyi#163.com
#2007-11-24每隔半小时自动绑定上网客户mac地址。
#不需要绑定的客户请在帐号处加标签“bbd”
#######################################################

:foreach i in=[/ppp act find service = pppoe] do={
:set name [/ppp act get $i name];
:set caller-id [/ppp act get $i caller-id];
:set sfbd [/ppp sec get [/ppp secret find name=$name] comment];
:set sfid [/ppp sec get [/ppp secret find name=$name] caller-id];
:if ((!($sfbd="bbd")) && ($sfid="")) do={/ppp secret set [/ppp sec find name=$name] caller-id=$caller-id};
}

[ 本帖最后由 木木 于 2008-3-20 00:26 编辑 ]
routeros
回复

使用道具 举报

 楼主| 发表于 2008-3-21 13:02:18 | 显示全部楼层
谢谢楼上的朋友`  
  不过有点疑问``find name=$name 不是应该写成 find name="$name"才对么``
好像变量为文本类型的时候引用的时候应该加引号的` 不知道对不对` 我之前写了好几变好象都是因为没加引号才没有成功``
routeros
回复

使用道具 举报

发表于 2008-3-21 14:13:37 | 显示全部楼层
这个我也没+"",好像也没有问题,不过13楼的脚本,有事没事把act找个遍,而且每找一次都要运行相关脚本,在用户数多的时候,cpu负担不小.....
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-6 00:28 , Processed in 0.181255 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表