1. #!/usr/bin/expect 
  2.  
  3.  
  4. set timeout 5 
  5. set server [lindex $argv 0] 
  6. set user [lindex $argv 1] 
  7. set passwd [lindex $argv 2] 
  8.  
  9. spawn ssh -l $user $server 
  10. expect { 
  11. "(yes/no)" { send "yes\r"; exp_continue } 
  12. "password:" { send "$passwd\r" } 
  13. expect "*Last login*" interact 
  14.  
  15. 演示  
  16. [root@localhost ~]# expect test.sh 192.168.1.248 root 123 
  17. spawn ssh -l root 192.168.1.248 
  18. root@192.168.1.248's password:  
  19. Last login: Sun Mar 11 12:11:46 2012 from 192.168.1.7 
  20. [root@web-musicxx ~]#  
  21.  
  22.  
  23. 如果要做自动登录 
  24. 建立一个ip地址用户名passwd脚本 
  25. [root@localhost ~]#  cat file  
  26. 192.168.1.248:root:123 
  27. 建立一个sh脚本写一段循环 
  28. [root@localhost ~]# cat 1.sh  
  29. #!/bin/bash 
  30. for i in `cat file` 
  31. do 
  32. host=`echo $i | awk -F':' '{print $1}'` 
  33. user=`echo $i | awk -F':' '{print $2}'` 
  34. passwd=`echo $i | awk -F':' '{print $3}'` 
  35. expect test.sh $host $user $passwd 
  36. done 
  37.  
  38. 演示 
  39. [root@localhost ~]# bash 1.sh  
  40. spawn ssh -l root 192.168.1.248 
  41. root@192.168.1.248's password:  
  42. Last login: Sun Mar 11 14:59:04 2012 from 192.168.1.7 
  43. [root@web-musicxx ~]#  
  44.  
  45.  
  46. 如果要在脚本中嵌套命令远程执行 
  47. 如: 
  48. #!/usr/bin/expect -f 
  49.  
  50. set timeout 5 
  51. set server [lindex $argv 0] 
  52. set user [lindex $argv 1] 
  53. set passwd [lindex $argv 2] 
  54.  
  55. spawn ssh -l $user $server 
  56. expect { 
  57. "(yes/no)" { send "yes\r"; exp_continue } 
  58. "password:" { send "$passwd\r" } 
  59. expect "*#" 
  60. send "touch /testexpect \r" 
  61. send "ls -l / \r" 
  62. expect "*#" 
  63.  
  64. expect "*Last login*" interact