Expect est un langage de script pour s'interfacer avec des programmes comme FTP, Telnet, fsck, ssh et d'autres qui ne peuvent normalement pas être automatisée à partir d'un script shell. Il est donc également bon pour automatiser l'exécution de programmes sur des systèmes distants. Il s'installe par apt (debian / Ubuntu) ou yum

apt-get install expectk

Vous devez pour cela lister les questions et explicitement en donner les réponses. les wildcards sont permis afin d'être plus souple sur les questions

Voici un exemple qui répond automatiquement à un script se connectant en SSH (bouh pas bien ! :) )

expect - <<ENDSCRIPT
  spawn ssh $_user@$_server '$_command'
  match_max 100000

  expect {
       "Are you sure you want to continue connecting (yes/no)"
       {
          sleep 1
          send "yes\r"
          exp_continue
       }
       "*password:*"
       {
          sleep 1
          send "PASSWORD\r"
          exp_continue
      }
  }
ENDSCRIPT 

En voici un autre pour un SCP :

#!/usr/bin/expect  --
 set timeout 30
 spawn scp user@ip:~/myfile  .
 expect {
                      "password:" {
                                send "password\r"
                    } "yes/no)?" {
                                send "yes\r"
                                set timeout -1
                    } timeout {
                                exit
                    } eof {
                                exit
                    }
 }

Combiné avec ShUnit, il permet d'automatiser les tests facilement.