免费注册 查看新帖 |

Chinaunix

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

如何在bash shell脚本中使用expect?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-09 17:37 |只看该作者 |倒序浏览
RT
例如在shell脚本中直接写入

code:

expect{
"*(yes/no)? " {send "yes\r"}
"*password:" {send "$passwd\r"}
"*Permission denied*" {send_user "Permission denied\n"
                    close
                    set done 0
                    break
                      }
"*Connection refused*" {send_user "Connection refused\n"
                    close
                    set done 0
                    break
                      }
"*Connection timed out*" {send_user "Connection timed out\n"
                    close
                    set done 0
                    break
                      }
"*%" {close
                    set done 0
                    break
                      }
}

论坛徽章:
0
2 [报告]
发表于 2008-09-09 17:40 |只看该作者
expect -c

论坛徽章:
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
3 [报告]
发表于 2008-09-10 07:50 |只看该作者
搜索一下 here document

论坛徽章:
0
4 [报告]
发表于 2008-09-10 10:38 |只看该作者
我搜过了,找到一篇帖子,没人回答..............

可能是我的表达有问题,我的意思是bash脚本和expect能否写在一起。

如:
code:

#!/bin/bash
echo "expect"
#!/usr/bin/expect
set timeout 20
exec /bin/cat </dev/null >/root/.ssh/known_hosts
proc do_ssh_top {ip passwd cmd} {
set done 1
set timeout_case 0
spawn ssh $ip "$cmd"
while {$done} {
expect {
timeout {
  switch -- $timeout_case {
        0 {send "\n"}
        1 {send "\n"}
        2 {puts stderr "Connection timed out"
                close
                set done 0
                break
                }
        }
        incr timeout_case
  }
"*(yes/no)? " {send "yes\r"}
"*password:" {send "$passwd\r"}
"*Permission denied*" {send_user "Permission denied\n"
                    close
                    set done 0
                    break
                      }
"*Connection refused*" {send_user "Connection refused\n"
                    close
                    set done 0
                    break
                      }
"*Connection timed out*" {send_user "Connection timed out\n"
                    close
                    set done 0
                    break
                      }
"*%" {close
                    set done 0
                    break
                      }
}
}
}
do_ssh_top "192.168.1.111" 1234 ls
========================================================================
最后的输出结果只有expect

论坛徽章:
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-09-10 10:49 |只看该作者

  1. #! /bin/bash
  2. sh-cmd1
  3. ....
  4. sh-cmdn
  5. ##################
  6. expect <<\EOF
  7. expect-cmd1
  8. .......
  9. expect-cmdn
  10. EOF
  11. ##################
  12. sh-cmdo
  13. .......
  14. sh-cmdp
  15. ##################
  16. expect <<\EOF
  17. expect-cmdr
  18. .......
  19. expect-cmds
  20. EOF
  21. ##################

  22. ................
复制代码

论坛徽章:
0
6 [报告]
发表于 2008-09-10 10:54 |只看该作者
非常感谢~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP