Expect
# Expect

In informatica Expect è uno strumento di amministrazione di sistemi Unix-like scritto da Don Libes per automatizzare applicazioni interattive come SSH, SFTP, Telnet, FTP, rlogin. È un'estensione del linguaggio tcl. Utilizza una pty per eseguire un sottoprocesso in maniera trasparente, permettendo l'automazione di processi che sono accessibili tramite terminale. Con l'estensione Tk le applicazioni possono essere eseguite in GUI X11.

Expect sfrutta le espressioni regolari, permettendo di creare script per controllare intelligentemente programmi che non hanno al loro interno un sistema di scripting o macro.

## Esempi

Ecco un semplice script che automatizza una sessione telnet.

Un esempio di

## Utilizzo

Expect viene utilizzato come una "colla" per collegare vari strumenti assieme. L'idea generale è quella di utilizzare strumenti esistenti all'interno del sistema per risolvere i problemi piuttosto che risolverli all'interno di expect.

La chiave di successo di expect è 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ò 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.

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.

Esistono suite di testing basate su Expect. DejaGNU è una suite di test molto utilizzata per testare gcc e molto comoda per testare su target remoti come piattaforme embedded.

È 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 è spesso lungo e difficile da comprendere ma è sempre possibile pulire lo script per ottenere un codice più pulito.

È possibile avviare lo script via cron per eseguire operazioni di amministrazione schedulati. Non c'è bisogno di alcuna modifica perché utilizza solo strumenti del sistema dove viene eseguito.

