免费注册 查看新帖 |

Chinaunix

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

expect ssh自动登录时退出很慢,请问这是为什么,如何变快? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-02 11:24 |只看该作者 |倒序浏览
-----cat auto_ssh.sh
#!/usr/bin/expect

set timeout 10
set host_ip [lindex $argv 0]
set password [lindex $argv 1]

spawn ssh ${host_ip}
expect {
     "(yes/no)?"
         {
             send "yes\n"
             expect "*assword:" { send "$password\n"}
         }
     "*assword:"
         {
             send "$password\n"
         }
     }
expect "100%"
expect eof


154:~/wx/shell/terminal # ./auto_ssh.sh 10.137.22.110 110
spawn ssh 10.137.22.110
Password:
Last login: Thu Feb  2 11:09:35 2012 from 10.137.23.53
154:~ # exit      ——此处exit退出很慢,足足有3-5s,请问这是为什么?如何提高速度?谢谢!
You have new mail in /var/mail/root
154:~/wx/shell/terminal # exit
logout
There are stopped jobs.

论坛徽章:
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 [报告]
发表于 2012-02-02 13:04 |只看该作者
#!/usr/bin/expect  -d
自己观察一下吧

论坛徽章:
0
3 [报告]
发表于 2012-02-02 15:02 |只看该作者
回复 2# waker


    154:~/wx/shell/terminal # ./auto_ssh.sh 10.137.22.110 110
expect version 5.44.1.11
argv[0] = /usr/bin/expect  argv[1] = -d  argv[2] = ./auto_ssh.sh  argv[3] = 10.137.22.110  argv[4] = 110  
set argc 2
set argv0 "./auto_ssh.sh"
set argv "10.137.22.110 110"
executing commands from command file ./auto_ssh.sh
spawn ssh 10.137.22.110 parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {16183}

expect: does "" (spawn_id exp4) match glob pattern "(yes/no)?"? no
"*assword:"? no
Password:
expect: does "Password: " (spawn_id exp4) match glob pattern "(yes/no)?"? no
"*assword:"? yes
expect: set expect_out(0,string) "Password:"
expect: set expect_out(spawn_id) "exp4"
expect: set expect_out(buffer) "Password:"
send: sending "mdsp105\n" to { exp4 }
send: sending "exit" to { exp4 }

expect: does " " (spawn_id exp4) match glob pattern "100%"? no


expect: does " \r\n" (spawn_id exp4) match glob pattern "100%"? no
Last login: Thu Feb  2 14:44:33 2012 from 10.137.23.3

论坛徽章:
0
4 [报告]
发表于 2012-02-02 15:05 |只看该作者
#!/usr/bin/expect  -d

加了这个 -d 参数之后,会报错啊

论坛徽章:
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 [报告]
发表于 2012-02-02 15:32 |只看该作者
回复 4# wxdlut


   那些是详细的信息,不是报错,仔细看看吧,你预期匹配的字串真的匹配到了么?
另外通常我们都 send "\r"而不是send "\n" ,注意键盘上那个是回车键不是换行键
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP