工作需要
用expect脚本 telnet 上了一个设备
现在问题是 我send一个命令后 设备会反馈到终端上显示出一些信息 其中包含IP 而且这个IP是不固定的
于是我想 在expect 脚本里将 这些反馈信息 预存到一个文本里 然后再用bash脚本正则出IP 然后赋值给一个变量
然后再在expect 脚本调用这个变量
怎么操作? 有其他解决方案没?
我现在就是不知道如何获取反馈信息 且将它们存到文本里
各位达达说下关键词
关于expect脚本交互的一些问题
-
- 帖子: 105
- 注册时间: 2008-11-03 10:06
- charleskao
- 帖子: 206
- 注册时间: 2008-03-27 17:21
-
- 帖子: 105
- 注册时间: 2008-11-03 10:06
Re: 关于expect脚本交互的一些问题
expect 里只能用spawn 调用
怎么个写法 能让expect 获取的终端数据 保存到文本里?
怎么个写法 能让expect 获取的终端数据 保存到文本里?
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
-
- 帖子: 32
- 注册时间: 2008-01-29 9:09
Re: 关于expect脚本交互的一些问题
log_file -a logfile
记录操作过程中的所有动作
你是要这样的麽?
记录操作过程中的所有动作
你是要这样的麽?
-
- 帖子: 105
- 注册时间: 2008-11-03 10:06
Re: 关于expect脚本交互的一些问题
ee的意思?
expect * >>XXXXX
??
expect * >>XXXXX
??
-
- 帖子: 82
- 注册时间: 2008-03-06 4:56
Re: 关于expect脚本交互的一些问题
expect本身就支持正则表达式,而且应该比bash方便多了
expect -indices -re {正则表达式}
然后用$expect_out(n,string)表示第n个括号里的字符串,整个字符串是0
有的时候可能要在正则表达式前面加上^以保证是从缓冲区开头开始匹配,最前面还要加上一条命令match_max 接一个大数以免缓冲区满
当然你要是非得把$expect_out(0,string)写进文件然后再读一遍我也没办法
tcl保存文件:
set 变量 [open 文件名 w]
puts -nonewline $变量 内容
close $变量
运行命令并读取结果:
set 变量 [open {|命令} r]
随便你怎么处理 [read $变量]
close $变量
运行命令并通过expect分析结果:
spawn -open [open {|命令} r]
需要备份一个什么变量或者封装在单独函数里,具体就看文档吧
用log_file记录理论上当然也不是不行,不过那样你还不如用纯bash脚本:
命令|tee 文件|{ grep xxx;你的处理;}
想要交互的话:
exec 3<> >(:)
命令 0<&3 |tee 文件|{ grep xxx;你的处理 >&3;}
不过<> >(:)是文档里没有的非常规用法,而且想要关闭文件也稍微有点麻烦(但是可行)。。你也可以mkfifo,这样比较正规
expect -indices -re {正则表达式}
然后用$expect_out(n,string)表示第n个括号里的字符串,整个字符串是0
有的时候可能要在正则表达式前面加上^以保证是从缓冲区开头开始匹配,最前面还要加上一条命令match_max 接一个大数以免缓冲区满
当然你要是非得把$expect_out(0,string)写进文件然后再读一遍我也没办法
tcl保存文件:
set 变量 [open 文件名 w]
puts -nonewline $变量 内容
close $变量
运行命令并读取结果:
set 变量 [open {|命令} r]
随便你怎么处理 [read $变量]
close $变量
运行命令并通过expect分析结果:
spawn -open [open {|命令} r]
需要备份一个什么变量或者封装在单独函数里,具体就看文档吧
用log_file记录理论上当然也不是不行,不过那样你还不如用纯bash脚本:
命令|tee 文件|{ grep xxx;你的处理;}
想要交互的话:
exec 3<> >(:)
命令 0<&3 |tee 文件|{ grep xxx;你的处理 >&3;}
不过<> >(:)是文档里没有的非常规用法,而且想要关闭文件也稍微有点麻烦(但是可行)。。你也可以mkfifo,这样比较正规
-
- 帖子: 105
- 注册时间: 2008-11-03 10:06
Re: 关于expect脚本交互的一些问题
7楼解决我的问题了 !!
本来可以man 着慢慢看的 但E文有限 又急着用
谢谢7楼!
另外 装进文本是为方便调试 后来 发现 可以直接 send "echo XXX"
再次感谢cosechy!!
本来可以man 着慢慢看的 但E文有限 又急着用
谢谢7楼!
另外 装进文本是为方便调试 后来 发现 可以直接 send "echo XXX"
再次感谢cosechy!!
-
- 帖子: 82
- 注册时间: 2008-03-06 4:56
Re: 关于expect脚本交互的一些问题
我只是路过的,看着地方严重不爽
于是随便说几句话。
于是随便说几句话。