LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 890|回复: 4

expect的问题

[复制链接]
发表于 2005-1-14 14:38:19 | 显示全部楼层 |阅读模式
  1. #!/usr/bin/expect --


  2. set username "ports"
  3. set password "ports"


  4. spawn ssh -1 -l $username 10.254.162.250

  5. [color=Red]if {[expect "yes/no"]=0} {
  6.         send "yes\n"
  7. }[/color]
  8. expect "password:"
  9. send "$password\n"
  10. expect "#"
  11. send "show run\n"
  12. interact
复制代码


目前我的问题是,在ssh进程被spawn后,如果遇到第一次登录目标机器时会返回一个询问,询问是否存储,然后输入yes,这个过程在程序中如何实现自动判断并send “yes”呢(红字部分的写法)?
发表于 2005-1-14 22:17:32 | 显示全部楼层
/usr/share/doc/expect/examples$
这个目录下是expect自代的目录。
回复 支持 反对

使用道具 举报

发表于 2005-1-18 15:50:26 | 显示全部楼层
expect {
         \"*yes/no*\" {send \"yes\r\"}
回复 支持 反对

使用道具 举报

发表于 2005-1-19 23:09:25 | 显示全部楼层
楼上的不对吧,你好象没有明白他的意思.

  1. #!/usr/bin/expect -f

  2. set username "port"
  3. set password "port"
  4. set login true

  5. spawn ssh -1 -l $username 10.10.8.216
  6. expect {
  7.         "*yes/no*" { set login false ; send "yes\r" }
  8.         "*password:" { send "$password\r" }
  9. }
  10. if { $login==false } {
  11.         expect {
  12.                 "*password:" { send "$password\r" }
  13.         }
  14. }

  15. expect {
  16.         "#" { send "show run\r" }
  17. }
  18. interact
复制代码

注意发送的不是"\n"是"\r"
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-31 16:55:20 | 显示全部楼层
Post by 小锁
楼上的不对吧,你好象没有明白他的意思.

  1. #!/usr/bin/expect -f

  2. set username "port"
  3. set password "port"
  4. set login true

  5. spawn ssh -1 -l $username 10.10.8.216
  6. expect {
  7.         "*yes/no*" { set login false ; send "yes\r" }
  8.         "*password:" { send "$password\r" }
  9. }
  10. if { $login==false } {
  11.         expect {
  12.                 "*password:" { send "$password\r" }
  13.         }
  14. }

  15. expect {
  16.         "#" { send "show run\r" }
  17. }
  18. interact
复制代码

注意发送的不是"\n"是"\r"


楼上正解。但是对于“\n”和"\r"的区别是什么呢?我好像用“\n”也能完成
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表