arica1985e 发表于 2008-3-13 22:55:47

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

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

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

[ 本帖最后由 arica1985e 于 2008-3-14 14:39 编辑 ]

arica1985e 发表于 2008-3-13 22:56:17

沙发```自己顶下``嘿嘿

arica1985e 发表于 2008-3-14 14:38:38

各位老大`` 进来看看吧~~~

hcb 发表于 2008-3-14 15:25:43

首先,你看看脚本能不能运行,运行的话计数器会增加的,如果不能运行的话,肯定是有语法错误,那把全部代码复制到终端里面运行看看,会提示你那行有错误的

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

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

tpy372 发表于 2008-3-14 16:40:05

好像pr也不能用于脚本里,只能在终端中使用...

tpy372 发表于 2008-3-15 01:24:58

楼主的脚本好像是自动绑定mac吧...
用:foreach i in 的函数即可....

arica1985e 发表于 2008-3-17 14:06:56

谢谢` 各位大哥的详细解答``` 我试试去`` ^-^

arica1985e 发表于 2008-3-17 14:15:49

:foreach i in= do={
:set name ;
:if(/ppp act find name="$name") do {
:set mac caller-id];
/ppp se set $name caller-id="$mac"}
}

这样写可以么``


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

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

arica1985e 发表于 2008-3-17 14:26:24

为了写这脚本 在baidu找了不少资料``不过都很少``不知道那为朋友有详细点的ros脚本方面的资料```http://bbs.routerclub.com/redirect.php?goto=findpost&pid=180668&ptid=29682 这的也看过了 好像少了点`` 至今还不知道 "[ ] {} ().."等符号的要用在什么地方 我比较笨``就看别人的脚本 比较下 看有没什么规律呵呵``

tpy372 发表于 2008-3-17 23:56:27

echo是干什么的???

arica1985e 发表于 2008-3-18 18:32:11

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

arica1985e 发表于 2008-3-19 23:48:43

:time: :time:

木木 发表于 2008-3-20 00:24:41

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

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

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

arica1985e 发表于 2008-3-21 13:02:18

谢谢楼上的朋友`
不过有点疑问``find name=$name 不是应该写成 find name="$name"才对么``
好像变量为文本类型的时候引用的时候应该加引号的` 不知道对不对` 我之前写了好几变好象都是因为没加引号才没有成功``

tpy372 发表于 2008-3-21 14:13:37

这个我也没+"",好像也没有问题,不过13楼的脚本,有事没事把act找个遍,而且每找一次都要运行相关脚本,在用户数多的时候,cpu负担不小.....
页: [1] 2
查看完整版本: Ros脚本 在命令行下可以运行放到script list却无法运行