b'\n_START_ARTICLE_\nExpect\n_START_SECTION_\nEsempi\n_START_PARAGRAPH_\nEcco un semplice script che automatizza una sessione telnet._NEWLINE_# Si assume che  $remote_server, $my_user_id, $my_password, and $my_command siano letti in precedenza# nello script.# Apre una sessione telnet ad un server remoto, invia user e password, esegue un comando.spawn telnet $remote_serverexpect "username:"# Invia il nome utentesend "$my_user_id\\r"# Attende il prompt, in alcuni casi inviare la password o un comando# prima del prompt pu\xc3\xb2 causare problemi.expect "password:"# Invia la password ed attende nuovamente il promptsend "$my_password\\r"expect "%"# Invia il comandosend "$my_command\\r"expect "%"# Salva l\'output del comando nella variabile "result"# Questa variabile potr\xc3\xa0 essere visualizzata in seguito o salvata su fileset results $expect_out(buffer)# Invia il comando di termine sessione ed attende l\'eofsend "exit\\r"expect eof_NEWLINE_Un esempio di_NEWLINE_#!/usr/local/bin/expect -f# `-- inserire qui la posizione di expect# per sapere la posizione di expect eseguire "which expect" a terminale# Procedura per eseguire la connessione.# Ritorna 0 se \xc3\xa8 andata a buon fine, 1 altrimenti.proc connect {passw} {_NEWLINE_  expect {_NEWLINE_    "Password:" {_NEWLINE_      send "$passw\\r"_NEWLINE_        expect {_NEWLINE_          "sftp*" {_NEWLINE_            return 0_NEWLINE_          }_NEWLINE_        }_NEWLINE_    }_NEWLINE_  }_NEWLINE_  # timed out_NEWLINE_  return 1}# Legge i parametri forniti da linea di comandoset 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]# decommentando le righe seguenti stampa un resume dei parametri di input#puts "Argument data:\\n";#puts "user: $user";#puts "passw: $passw";#puts "host: $host";#puts "location: $location";#puts "file1: $file1";#puts "file2: $file2";_NEWLINE_ _NEWLINE_# Controlla che tutti i parametri siano stati inseriti.if { $user == "" || $passw == "" || $host == "" || $location == "" || $file1 == "" || $file2 == "" }  {_NEWLINE_  puts "Usage: <user> <passw> <host> <location> <file1 to send> <file2 to send>\\n"_NEWLINE_  exit 1}_NEWLINE_ _NEWLINE_# Connessione all\'hostspawn sftp $user@$host# Esegue la procedura "connect"set rez [connect $passw]# Se l\'invio della password \xc3\xa8 andata a buon fine invia il file e termina lo scriptif { $rez == 0 } {_NEWLINE_  send "cd $location\\r"_NEWLINE_  set timeout -1_NEWLINE_  send "put $file2\\r"_NEWLINE_  send "put $file1\\r"_NEWLINE_  send "ls -l\\r"_NEWLINE_  send "quit\\r"_NEWLINE_  expect eof_NEWLINE_  exit 0}# Se l\'invio della password ha dato errore stampa un messaggio di errore ed esce.puts "\\nError connecting to server: $host, user: $user and password: $passw!\\n"exit 1\n_START_SECTION_\nUtilizzo\n_START_PARAGRAPH_\nExpect viene utilizzato come una "colla" per collegare vari strumenti assieme. L\'idea generale \xc3\xa8 quella di utilizzare strumenti esistenti all\'interno del sistema per risolvere i problemi piuttosto che risolverli all\'interno di expect._NEWLINE_La chiave di successo di expect \xc3\xa8 l\'utilizzo con software commerciale, molti di questi programmi hanno un qualche tipo di interfaccia a riga di comando ma soffrono di mancanza di un serio sistema di automazione in quanto concepiti per l\'amministrazione da parte dell\'utente ma non sono state utilizzate ulteriori risorse per sviluppare un sistema di scripting. Uno script di expect pu\xc3\xb2 controllare variabili d\'ambiente per recuperare informazioni maggiori integrandolo con comandi unix ed infine entrare all\'interno dell\'interfaccia del prodotto, eseguire azioni e prendere decisioni intelligenti su quali azioni eseguire._NEWLINE_Ogni volta che un\'operazione expect viene completata il risultato viene salvato in una variabile chiamata $expect_out. Questo permette di aumentare le informazione da mostrare all\'utente e aiuta a prendere una decisione su quale sia il prossimo comando da inviare in base alle circostanze._NEWLINE_Esistono suite di testing basate su Expect. DejaGNU \xc3\xa8 una suite di test molto utilizzata per testare gcc e molto comoda per testare su target remoti come piattaforme embedded._NEWLINE_\xc3\x88 possibile generare automaticamente gli script con autexpect. Questo tool osserva le azioni di una sessione di lavoro e genera lo script expect tramite euristica. Lo script generato \xc3\xa8 spesso lungo e difficile da comprendere ma \xc3\xa8 sempre possibile pulire lo script per ottenere un codice pi\xc3\xb9 pulito._NEWLINE_\xc3\x88 possibile avviare lo script via cron per eseguire operazioni di amministrazione schedulati. Non c\'\xc3\xa8 bisogno di alcuna modifica perch\xc3\xa9 utilizza solo strumenti del sistema dove viene eseguito.'