找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 20701|回复: 17

[脚本] [讨论]脚本编程:txt文本账号导入ROS的思路及具体代码

  [复制链接]
发表于 2011-10-4 13:42:27 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 ww111222 于 2011-10-4 13:45 编辑

学习ros也有一段时间了,为了锻炼自己的脚本水平, 在学习了 **家 的视频教程后,给自己布置了一顶作业:

用脚本导入 文本账号。


文本账号 信息如下:

EndDate   Name       Address    Tel                   Bandwidth   User                 Pass
======        ======        ======        ========= ======= ========= ===========
201110        王大夫        1单元402        13999393998 4M                  15809918400  1234567890
201206        刘伟        2单元401        6922171               4M                  15809918816  09876655


其中:第1行 和 第2行 是提示信息
从第3行开始才是 具体的账号信息。

我想在导入后得到如下账号:

账号的comment信息:[20111010](王大夫)(1单元402)(13999393998)
账号为:15809918400 密码为:1234567890,Profile为 自定义的 4M 的配置。

routeros
 楼主| 发表于 2011-10-4 13:46:31 | 显示全部楼层
本帖最后由 ww111222 于 2011-10-4 13:52 编辑

#pick用法 截取abcde里从1到3的内容得到 bc
# :put [:pick "abcde" 1 3 ] 得到 bc

#find用法 从$lastEnd开始 查找字符串或数组中第一个出现查找内容的位置
# :put [:find "abcdefghigk" g 3]  得到6
# :put [:find "abcdefghigk" g ]  得到6
# :put [:find "abcdefghigk" g 6] 得到9



#获得文本内容
:global content [/file get [/file find name=uu.txt] contents]

#获得文本长度
:global  contentLen [ :len $content ]

#每行结尾标志
:global lineEnd 0

#每行的内容
:global line ""

#每一行的开始位置
:global lastEnd 0

#查找 第2行末[=\r\n(回车换行符)]的位置,从第0位开始
:set lineEnd [ :find $content "=\r\n" $lastEnd ]
:put $lineEnd

#去掉 前两行 的提示内容,获得真正账号信息
#第3行开始的位置:$lineEnd + 3
:global TempContent 0
:set TempContent [ :pick $content ($lineEnd + 3) $contentLen ]
:put $TempContent

#得到实际账号信息的长度
:set contentLen [ :len $TempContent ]
:set lineEnd 0
:set lastEnd 0

#打印所有变量的值
:environment print





====================================================

下面的问题是如何 得到 以空格 分隔 的信息。
routeros
回复

使用道具 举报

 楼主| 发表于 2011-10-4 15:54:31 | 显示全部楼层
本帖最后由 ww111222 于 2011-10-4 22:56 编辑

奇怪了,  在ROS里 不认 文本文件里用TAB生成的空格间隔。

用:
:find $line " " $lineTop

无法找到 空格



#循环执行
:while ($lineEnd != $TXTcontentLen) do={

        #查找 第一个 \r\n(回车换行符)的位置,从0开始 得到每一行的长度
        :set lineEnd [ :find $TXTcontent "\r\n" $lineTop ]
        :put $lineEnd
       
        #取得 账号信息 一行 的内容
        :set line [ :pick $TXTcontent $lineTop $lineEnd ]
        :put $line

        #得到当前行的长度
        :global lineLength [ :len $line ]
        :put $lineLength
       
        :set lineEnd $TXTcontentLen
        :put $TXTcontentLen
       
        #得到当前行EndDate的位置
        :global EndDateEnd 0
        :set EndDateEnd [ :find $line " " $lineTop ]
        :put $EndDateEnd
       
        #得到EndDate的文本内容
        :local EndDateTXT ""
        :set EndDateTXT [ :pick $line $lineTop $EndDateEnd ]
        :put $EndDateTXT
       

}








========================
哈哈,解决了。原来 TAB 产生的空格是 \t 来表示

uu.rar

249 Bytes, 下载次数: 65

评分

参与人数 2铜板 +16 收起 理由
47771885 + 10 很不错的 不过最好事先处理下文本格式大小
ksw520 + 6 希望楼主继续分享学习笔记。

查看全部评分

routeros
回复

使用道具 举报

发表于 2011-10-5 09:50:53 | 显示全部楼层
虽然用不上,但还是要顶一下。
routeros
回复

使用道具 举报

发表于 2011-10-5 11:06:53 | 显示全部楼层
不错,谢谢了!
routeros
回复

使用道具 举报

 楼主| 发表于 2011-10-5 15:12:40 | 显示全部楼层
本帖最后由 ww111222 于 2011-10-5 15:14 编辑

  今天测试了一下, 基本上 达到 要求了。


剪贴板-1.jpg



剪贴板-2.jpg







还有一个难题:



   取得  4M  这个值后,:set TempTXT5


  用 profile=$TempTXT5 居然提示错误。


routeros
回复

使用道具 举报

发表于 2011-12-20 00:33:14 | 显示全部楼层
要顶一下
routeros
回复

使用道具 举报

发表于 2012-1-12 11:48:24 | 显示全部楼层
路过学习学习!!!
routeros
回复

使用道具 举报

发表于 2012-1-12 12:37:01 | 显示全部楼层
会命令,,的就是学的快呀
routeros
回复

使用道具 举报

发表于 2012-1-13 14:41:55 | 显示全部楼层
很好,很不错,学习了
routeros
回复

使用道具 举报

发表于 2012-2-27 15:08:22 | 显示全部楼层
希望楼主继续分享学习笔记
routeros
回复

使用道具 举报

发表于 2012-2-27 18:55:20 | 显示全部楼层
感谢分享
routeros
回复

使用道具 举报

发表于 2012-5-26 13:13:14 | 显示全部楼层
好贴,顶,,,,,正要向你请教呢,呵呵
routeros
回复

使用道具 举报

发表于 2012-5-26 13:24:22 | 显示全部楼层
不错,支持一下。
routeros
回复

使用道具 举报

发表于 2013-5-31 09:29:10 | 显示全部楼层
楼主可以留个QQ联系方式吗 有问题请教你
routeros
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-13 14:24 , Processed in 0.080345 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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