interact.exp
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:4k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. #!/usr/bin/expect --
  2. # ====================================================================
  3. # The Vovida Software License, Version 1.0 
  4. # Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved.
  5. # Redistribution and use in source and binary forms, with or without
  6. # modification, are permitted provided that the following conditions
  7. # are met:
  8. # 1. Redistributions of source code must retain the above copyright
  9. #    notice, this list of conditions and the following disclaimer.
  10. # 2. Redistributions in binary form must reproduce the above copyright
  11. #    notice, this list of conditions and the following disclaimer in
  12. #    the documentation and/or other materials provided with the
  13. #    distribution.
  14. # 3. The names "VOCAL", "Vovida Open Communication Application Library",
  15. #    and "Vovida Open Communication Application Library (VOCAL)" must
  16. #    not be used to endorse or promote products derived from this
  17. #    software without prior written permission. For written
  18. #    permission, please contact vocal@vovida.org.
  19. # 4. Products derived from this software may not be called "VOCAL", nor
  20. #    may "VOCAL" appear in their name, without prior written
  21. #    permission of Vovida Networks, Inc.
  22. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
  23. # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  24. # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
  25. # NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA
  26. # NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
  27. # IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
  28. # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  29. # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  30. # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  31. # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  32. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
  33. # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  34. # DAMAGE.
  35. # ====================================================================
  36. # This software consists of voluntary contributions made by Vovida
  37. # Networks, Inc. and many individuals on behalf of Vovida Networks,
  38. # Inc.  For more information on Vovida Networks, Inc., please see
  39. # <http://www.vovida.org/>.
  40. set argc [llength $argv]
  41. if { $argc < 5 } {
  42.     puts "usage: interact.exp <pwd> <host> <rootpf> <userpf> <command>n"
  43.     exit 1
  44. }
  45. set uid     [exec whoami]
  46. set pwd     [lindex $argv 0]
  47. set host    [lindex $argv 1]
  48. set rootpf  [lindex $argv 2]
  49. set userpf  [lindex $argv 3]
  50. set command [lindex $argv 4]
  51. # suppressing stdout printout
  52. log_user 0
  53. stty -echo
  54. if { !([file exists $rootpf] && [file exists $userpf]) } {
  55.     # if passwd file does not exist get it and save it
  56.     if { ![file exists $rootpf] } {
  57.         send_user "Enter root password: "
  58.         expect_user -re "(.*)n"
  59.         send_user "n"
  60.         set rootpasswd $expect_out(1,string)
  61.         set file [open $rootpf "w"]
  62.         puts $file $rootpasswd
  63.         close $file
  64.     }
  65.     if { ![file exists $userpf] } {
  66.         send_user "Enter user password or passphrase: "
  67.         expect_user -re "(.*)n"
  68.         send_user "n"
  69.         set userpasswd $expect_out(1,string)
  70.         set file [open $userpf "w"]
  71.         puts $file $userpasswd
  72.         close $file
  73.     }
  74. }
  75. set file [open $rootpf "r"]
  76. set rootpasswd [read $file]
  77. close $file
  78. set file [open $userpf "r"]
  79. set userpasswd [read $file]
  80. close $file
  81. # starts with host and password
  82. spawn ssh $host
  83. set timeout 2
  84. expect {
  85.     -re "^.*continue connecting (yes/no)?.*$" {
  86.         send -- "yesn"
  87.     }
  88. }
  89. set timeout 5 
  90. expect {
  91.     -re "^.*root.*password:.*$" {
  92.         send -- "$rootpasswd"
  93.      }
  94.     -re "^.*$uid.*password:.*$" {
  95.         send -- "$userpasswd"
  96.     }
  97.     -re "^.*passphrase.*$uid.*:.*$" {
  98.         send -- "$userpasswd"
  99.     }
  100. }
  101. expect {
  102.     -exact "Last" {
  103.         send -- "cd $pwdn"
  104.     }
  105.     -exact "Permission denied." {
  106.         puts "invalid passwordn"
  107.         exit 1
  108.     }
  109. }
  110. # compound commands 
  111. send -- "$commandn"
  112. log_user 1
  113. set stty echo
  114. interact