Questo è il comando autoexpect che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
autoexpect: genera uno script Expect dalla visione di una sessione
SINOSSI
aspettarsi automaticamente [ args ] [ Programma argomenti... ]
INTRODUZIONE
autoexpect ti guarda interagire con un altro programma e crea uno script Expect che
riproduce le tue interazioni. Per gli script in linea retta, l'autoexpect consente di risparmiare molto tempo
sopra la scrittura di script a mano. Anche se sei un esperto di Expect, lo troverai
conveniente usare autoexpect per automatizzare le parti più insensate delle interazioni. è
molto più facile tagliare/incollare blocchi di script autoexpect che scriverli da
graffio. E se sei un principiante, potresti riuscire a farla franca senza imparare nulla
più su Expect che su come chiamare autoexpect.
Il modo più semplice per utilizzare autoexpect è chiamarlo dalla riga di comando senza argomenti.
Per esempio:
% aspettativa automatica
Per impostazione predefinita, autoexpect genera una shell per te. Dato un nome di programma e argomenti,
autoexpect genera quel programma. Per esempio:
% autoaspetta ftp ftp.cme.nist.gov
Una volta che il programma generato è in esecuzione, interagisci normalmente. Quando sei uscito dalla shell
(o programma che hai specificato), autoexpect creerà un nuovo script per te. Per impostazione predefinita,
autoexpect scrive il nuovo script in "script.exp". Puoi sovrascriverlo con il flag -f
seguito da un nuovo nome di script.
L'esempio seguente esegue "ftp ftp.cme.nist.gov" e memorizza lo script Expect risultante
nel file "nist".
% autoexpect -f nist ftp ftp.cme.nist.gov
È importante capire che autoexpect non garantisce uno script funzionante perché
deve necessariamente indovinare su certe cose - e occasionalmente indovina in modo sbagliato.
Tuttavia, di solito è molto facile identificare e risolvere questi problemi. I problemi tipici
siamo:
· Temporizzazione. Un numero sorprendentemente elevato di programmi (rn, ksh, zsh, telnet, ecc.)
e i dispositivi (ad esempio i modem) ignorano le sequenze di tasti che arrivano "troppo rapidamente" dopo
richiede. Se trovi che il tuo nuovo script si blocca in un punto, prova ad aggiungere a
breve sonno appena prima dell'invio precedente.
Puoi forzare questo comportamento sovrascrivendo la variabile
"force_conservative" vicino all'inizio dello script generato. Questo
la modalità "conservativa" fa automaticamente una breve pausa di autoexpect (un decimo di
un secondo) prima di inviare ogni carattere. Questo pacifica ogni programma che conosco
di.
Questa modalità conservativa è utile se vuoi solo rassicurarti rapidamente
che il problema è un tempismo (o se davvero non ti interessa quanto velocemente
lo script viene eseguito). Questa stessa modalità può essere forzata prima della generazione dello script da
usando il flag -c.
Fortunatamente, questi punti temporali sono rari. Ad esempio, telnet ignora
caratteri solo dopo aver inserito la sua sequenza di escape. I modem ignorano solo
personaggi subito dopo essersi collegati ad essi per la prima volta. Alcune
i programmi mostrano sempre questo comportamento, ma in genere hanno un interruttore a
disabilitalo. Ad esempio, il flag -T di rn disabilita questo comportamento.
L'esempio seguente avvia autoexpect in modalità conservativa.
aspettativa automatica -c
Il flag -C definisce una chiave per attivare la modalità conservativa. Il seguente esempio
avvia autoexpect (in modalità non conservativa) con ^L come interruttore. (Notare che
il ^L è inserito letteralmente - cioè, inserisci un vero control-L).
aspettativa automatica -C ^L
L'esempio seguente avvia autoexpect in modalità conservativa con ^L come
commutare.
aspettativa automatica -c -C ^L
· Eco. Molti programmi fanno eco ai caratteri. Ad esempio, se digiti "more" in a
shell, ciò che effettivamente vede autoexpect è:
hai digitato 'm',
computer digitato 'm',
hai digitato 'o',
computer digitato "o",
hai digitato 'r',
computer digitato "r",
...
Senza una conoscenza specifica del programma, è impossibile sapere se lo sei
aspettando di vedere l'eco di ogni carattere prima di digitare il successivo. Se si aspetta automaticamente
vede l'eco dei caratteri, presume di poterli inviare tutti come gruppo
piuttosto che intrecciarli nel modo in cui apparivano originariamente. Questo rende il
sceneggiatura più piacevole da leggere. Tuttavia, potrebbe plausibilmente essere errato se
dovevi davvero aspettare per vedere l'eco di ogni personaggio.
· Modificare. Autoexpect registra ogni personaggio dall'interazione nello script.
Questo è desiderabile perché ti dà la capacità di esprimere giudizi su
cosa è importante e cosa può essere sostituito con un pattern match.
D'altra parte, se usi comandi il cui output differisce da un'esecuzione all'altra,
gli script generati non saranno corretti. Ad esempio, la "data"
Il comando produce sempre un output diverso. Quindi, usando il comando date while
eseguire autoexpect è un modo sicuro per produrre uno script che richiederà modifiche
affinché funzioni.
Il flag -p mette autoexpect in "modalità prompt". In questa modalità, autoexpect sarà
cerca solo l'ultima riga dell'output del programma, che di solito è il
richiesta. Questo gestisce il problema della data (vedi sopra) e la maggior parte degli altri.
L'esempio seguente avvia autoexpect in modalità prompt.
aspettativa automatica -p
Il flag -P definisce un tasto per attivare/disattivare la modalità prompt. Il seguente esempio inizia
autoexpect (in modalità non prompt) con ^P come interruttore. Nota che ^P è
inserito letteralmente - cioè, inserisci un vero controllo-P.
aspetta automaticamente -P ^P
L'esempio seguente avvia autoexpect in modalità prompt con ^P come interruttore.
aspettativa automatica -p -P ^P
ALTRO FLAGS
I -silenzioso flag disabilita i messaggi informativi prodotti da autoexpect.
I -Q flag nomina un carattere di citazione che può essere usato per inserire caratteri che si aspettano automaticamente
altrimenti consumerebbero perché sono usati come interruttori.
L'esempio seguente mostra un numero di flag con virgolette usati per fornire un modo per entrare
gli interruttori letteralmente.
autoaspetta -P ^P -C ^L -Q ^Q
STILE
Non so se esiste uno "stile" per i programmi Expect ma autoexpect dovrebbe sicuramente
non essere additato come un modello di stile. Ad esempio, autoexpect utilizza le funzionalità di Expect
destinati specificamente allo scripting generato dal computer. Quindi non provare a
scrivere fedelmente script che appaiono come se fossero stati generati da autoexpect. Questo non è
utile.
D'altra parte, gli script autoexpect mostrano alcune cose utili. Ad esempio, tu
può vedere come qualsiasi stringa deve essere citata per usarla in uno script Tcl semplicemente eseguendo
le stringhe tramite autoexpect.
Usa autoexpect online utilizzando i servizi onworks.net