免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6521 | 回复: 10
打印 上一主题 下一主题

expect执行两次telnet问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-14 13:39 |只看该作者 |倒序浏览
请问expect如果实现两次telnet的问题
例如:脚本执行在一台linux PC上,脚本内容为从该PC telnet到设备1,在从1上telnet到2。我自己写的脚本只能telnet一次,即从PC telnet 到1,从1 telnet到2时不成功
脚本如下:
#!/usr/bin/expect
set tip [lindex $argv 0]
spawn telnet $tip
expect "*login*"
send "root\r\n"

expect "*$*"
spawn telnet 10.128.0.244
send "root\r\n"

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2008-05-14 15:19 |只看该作者
spawn telnet 10.128.0.244变为
send "telnet 10.128.0.244\r"

论坛徽章:
0
3 [报告]
发表于 2008-05-14 16:00 |只看该作者
谢谢!还有个问题telnet到第二个设备后,出现#一秒后就退出了,怎么可以不让程序退出,或者退出不要这么快呢?

不好意思,我是个新手,第一次写expect.刚刚看了好多帖子,很多都是用perl的expect,不明白perl、tcl和expect是什么关系

[ 本帖最后由 saya111 于 2008-5-15 10:28 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-05-15 10:43 |只看该作者
请指教,谢谢大家了.em25:

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
5 [报告]
发表于 2008-05-15 11:22 |只看该作者

  1. #!/usr/bin/expect
  2. set timeout -1
  3. spawn telnet IP_DEVICE_1
  4. expect "login:"
  5. sleep .1
  6. send "USER\r"
  7. expect "assword: "
  8. send "PASSWD\r"
  9. expect "$ "
  10. send "telnet IP_DEVICE_2\r"
  11. expect "login:"
  12. sleep .1
  13. send "USER\r"
  14. expect "assword: "
  15. send "PASSWD\r"
  16. expect "$ "
  17. interact
复制代码

大写的地方自己变一下,没考虑容错
假设登录的提示是 login: ....... passwod......
两个设备的系统提示符是$空格

论坛徽章:
0
6 [报告]
发表于 2008-05-15 11:37 |只看该作者
interact以后,后面的所有操作是不是就要都手动输入了,比如输出hostname.我这里所有的操作都要脚本里完成的.
其实我的疑问是为什么telnet到第一个设备后可以继续操作,比如创建文件,但是telnet到第二个设备后,很快就退出了呢,脚本后面的语句都不能执行了

非常感谢waker!

论坛徽章:
0
7 [报告]
发表于 2008-05-15 14:01 |只看该作者
文件最后加了expect eof就可以了.不过不明白是什么原因

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
8 [报告]
发表于 2008-05-15 14:47 |只看该作者
因为expect结果前会自动close它spawn的子进程

论坛徽章:
0
9 [报告]
发表于 2008-05-15 15:04 |只看该作者
谢谢!可是文件中好多处expect,为什么会在这处close spawn

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
10 [报告]
发表于 2008-05-15 15:49 |只看该作者
在哪处?
最后一行 send "root\r\n"
以后脚本立即就结束了,子进程在这个时候close的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP