免费注册 查看新帖 |

Chinaunix

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

[网络相关] shell中嵌套expect.关于send命令实现问题!谢谢! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-26 21:39 |只看该作者 |倒序浏览
本帖最后由 Mr_Van_Gogh 于 2014-09-27 12:42 编辑

[code]#!/bin/bash


        read TO_IP <host_ip
        read TO_PASSWD  <host_passwd
        /usr/bin/expect<<-EOF
        spawn scp /root/test/test3 root@$TO_IP:/home
        expect {
                "*password:"    {
                        send "$TO_PASSWD\r"
                        send "$TO _IP   FIRST   scp is right"
   
                }
        }

        expect eof
        
问题:输入密码后,想跟进一个显示标志,代码主机显示:send "$TO _IP   FIRST   scp is right"
单位终端没打印这条命令,直接就跳到下一条:scp /root/test/test4 root@$TO_IP:/home
怎么解决



请问是运行太快,还是什么问题。谢谢!

论坛徽章:
0
2 [报告]
发表于 2014-09-26 22:30 |只看该作者
刚接触脚本。不太清楚expect脚本。
刚才在网上找了下。好像在expect脚本里,expect命令与send命令是关联出现的。不能单独出现。
如果想在终端显示,可用send_user、puts命令。

论坛徽章:
0
3 [报告]
发表于 2014-09-27 10:21 |只看该作者
上面的回复有问题。感觉问题不在那个点上,坐等后续!

论坛徽章:
0
4 [报告]
发表于 2014-09-27 12:49 |只看该作者
大概明白原因了,但也只是猜测,感觉这么解释最合理。
send "$TO_PASSWD\r"后。还没有进入远程主机,可能因为命令send "$TO _IP   FIRST   scp is right"运行比现实登陆成功“log”过快。
这个时候还没有进入远程主机,又因为“passwd:”之后,输入的字符又不显示在终端。所以 造成这个问题。
如果在send "$TO_PASSWD\r" 加一个sleep。则回显示。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP