Expect

logiciel informatique

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.

Expect

Informations
Développé par Don Libes
Dernière version 5.45.4 ()[1],[2]Voir et modifier les données sur Wikidata
Écrit en Expect, Tcl
Système d'exploitation POSIX et Microsoft WindowsVoir et modifier les données sur Wikidata
Environnement GNU/Linux, FreeBSD, NetBSD, OpenBSD, MS Windows
Type Langage en ligne de commande (d)
Langage de programmation
Auto clicker (en)Voir et modifier les données sur Wikidata
Licence Domaine public[3]
Site web core.tcl.tk/expect/index

Exemples

modifier

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
  1. « Expect: Expect » (consulté le )
  2. « Expect - Browse /Expect/5.45.4 at SourceForge.net », (consulté le )
  3. (en) Financement américain - National Institute of Standards and Technology.

Voir aussi

modifier

Articles connexes

modifier

Liens externes

modifier