Expect

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Expect
Développeur Don Libes
Dernière version 5.44.1.15 (11 mars 2011)
Écrit en Expect, Tcl
Environnement GNU/Linux, FreeBSD, NetBSD, OpenBSD, MS Windows
Licence Domaine public[1]
Site web http://expect.nist.gov/

Expect est un outil d'automation et de tests de non-régression écrit par Don Libes comme extension au langage de script Tcl pour tester des applications interactives comme telnet, ftp, passwd, fsck, rlogin, ssh, ou bien d'autres.

Exemples[modifier | modifier le code]

Un exemple simple de script automatisant une session telnet:

  # Assume $remote_server, $my_user_id, $my_password, and $my_command were read in earlier 
  # in the script.
# Open a telnet session to a remote server, and wait for a username prompt. spawn telnet $remote_server expect "username:"
# Send the username, and then wait for a password prompt. send "$my_user_id\r" expect "password:"
# Send the password, and then wait for a shell prompt. send "$my_password\r" expect "%"
# Send the prebuilt command, and then wait for another shell prompt. send "$my_command\r" expect "%"
# Capture the results of the command into a variable. This can be displayed, or written to disk. set results $expect_out(buffer)
# Exit the telnet session, and wait for a special end-of-file character. send "exit\r" expect eof

Un autre exemple de script testant ftp:

  # Open an ftp session to a remote server, and wait for a username prompt.
  spawn ftp $remote_server
  expect "username:"
# Send the username, and then wait for a password prompt. send "$my_user_id\r" expect "password:"
# Send the password, and then wait for an ftp prompt. send "$my_password\r" expect "ftp>"
# Switch to binary mode, and then wait for an ftp prompt. send "bin\r" expect "ftp>"
# Turn off prompting. send "prompt\r" expect "ftp>"
# Get all the files send "mget *\r" expect "ftp>"
# Exit the ftp session, and wait for a special end-of-file character. send "bye\r" expect eof

Et enfin ci-dessous, un exemple de test sftp, avec mot de passe:

 #!/usr/local/bin/expect -f #<---insert here your expect program location
 
 # procedure to attempt connecting; result 0 if OK, 1 otherwise
 proc connect {passw} {
  expect {
    "Password:" { 
        send "$passw\r"
        expect {
           "sftp*" {
                return 0
            }  
        }
     }
  }
  # timed out
  return 1
 }
 
 #read the input parameters
 set user [lindex $argv 0]
 set passw [lindex $argv 1]
 set host [lindex $argv 2]
 set location [lindex $argv 3]
 set file1 [lindex $argv 4]
 set file2 [lindex $argv 5]
 
 #puts "Argument data:\n";
 #puts "user: $user";
 #puts "passw: $passw";
 #puts "host: $host";
 #puts "location: $location";
 #puts "file1: $file1";
 #puts "file2: $file2";
 
 #check if all were provided
 if { $user == "" || $passw == "" || $host == "" || $location == "" || $file1 == "" || $file2 == "" }  {
   puts "Usage: <user> <passw> <host> <location> <file1 to send> <file2 to send>\n"
   exit 1
 }
 
 #sftp to specified host and send the files
 spawn sftp $user@$host
 
 set rez [connect $passw]
 if { $rez == 0 } {
   send "cd $location\r"
   set timeout -1
   send "put $file2\r"
   send "put $file1\r"
   send "ls -l\r"
   send "quit\r"
   expect eof
   exit 0
 }
 puts "\nError connecting to server: $host, user: $user and password: $passw!\n"
 exit 1

Notes et références[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]