Este é o comando expect_autoexpect que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS
PROGRAMA:
NOME
autoexpect - gera um script Expect ao assistir a uma sessão
SINOPSE
auto-esperar [ args ] [ programa args ... ]
INTRODUÇÃO
autoexpect observa você interagir com outro programa e cria um script Expect que
reproduz suas interações. Para scripts lineares, a autoexpect economiza um tempo substancial
sobre como escrever scripts à mão. Mesmo se você for um especialista do Expect, você o encontrará
conveniente usar o autoexpect para automatizar as partes mais estúpidas das interações. Isto é
muito mais fácil cortar / colar pedaços de scripts autoexpect juntos do que escrevê-los a partir
coçar, arranhão. E se você for um iniciante, você pode conseguir se safar sem aprender nada
mais sobre Expect do que como chamar autoexpect.
A maneira mais simples de usar autoexpect é chamá-lo da linha de comando sem argumentos.
Por exemplo:
% expectativa automática
Por padrão, autoexpect gera um shell para você. Dado um nome de programa e argumentos,
autoexpect gera esse programa. Por exemplo:
% expectativa automática de ftp ftp.cme.nist.gov
Assim que o programa gerado estiver em execução, interaja normalmente. Quando você tiver saído da concha
(ou programa que você especificou), o autoexpect criará um novo script para você. Por padrão,
autoexpect grava o novo script em "script.exp". Você pode substituir isso com o sinalizador -f
seguido por um novo nome de script.
O exemplo a seguir executa "ftp ftp.cme.nist.gov" e armazena o script Expect resultante
no arquivo "nist".
% autoexpect -f nist ftp ftp.cme.nist.gov
É importante entender que autoexpect não garante um script de trabalho porque
ele necessariamente tem que adivinhar sobre certas coisas - e ocasionalmente adivinha errado.
No entanto, geralmente é muito fácil identificar e corrigir esses problemas. Os problemas típicos
como:
· Cronometragem. Um número surpreendentemente grande de programas (rn, ksh, zsh, telnet, etc.)
e dispositivos (por exemplo, modems) ignoram pressionamentos de tecla que chegam "muito rapidamente" após
Comandos. Se você encontrar seu novo script pendurado em um ponto, tente adicionar um
sono curto antes do envio anterior.
Você pode forçar esse comportamento substituindo a variável
"force_conservative" próximo ao início do script gerado. Esse
modo "conservador" faz com que a autoexpectiva pause automaticamente por breves instantes (um décimo de
um segundo) antes de enviar cada personagem. Isso pacifica todos os programas que conheço
de.
Este modo conservador é útil se você quiser apenas se tranquilizar rapidamente
que o problema é de tempo (ou se você realmente não se importa com a rapidez
o script é executado). Este mesmo modo pode ser forçado antes da geração do script por
usando o sinalizador -c.
Felizmente, esses pontos de sincronização são raros. Por exemplo, telnet ignora
caracteres somente após inserir sua sequência de escape. Modems apenas ignoram
personagens imediatamente após se conectar a eles pela primeira vez. Uns poucos
programas exibem esse comportamento o tempo todo, mas normalmente têm uma mudança para
desative-o. Por exemplo, o sinalizador -T de rn desativa esse comportamento.
O exemplo a seguir inicia autoexpect no modo conservador.
esperar automaticamente -c
O sinalizador -C define uma chave para alternar o modo conservador. O seguinte exemplo
inicia a autoexpectativa (no modo não conservador) com ^ L como alternador. (Observe que
o ^ L é inserido literalmente - ou seja, insira um controle-L real).
autoexpect -C ^ L
O exemplo a seguir inicia autoexpect no modo conservador com ^ L como o
alternancia.
autoexpect -c -C ^ L
· Ecoando. Muitos caracteres de eco de programa. Por exemplo, se você digitar "mais" para um
shell, o que o autoexpect realmente vê é:
você digitou 'm',
computador digitou 'm',
você digitou 'o',
computador digitou 'o',
voce digitou 'r',
computador digitou 'r',
...
Sem conhecimento específico do programa, é impossível saber se você está
esperando para ver cada caractere ecoado antes de digitar o próximo. Se autoexpect
vê caracteres sendo ecoados, ele assume que pode enviá-los todos como um grupo
em vez de intercalá-los da maneira como apareceram originalmente. Isso torna o
roteiro mais agradável de ler. No entanto, pode ser concebível que esteja incorreto se
você realmente tinha que esperar para ver cada personagem ecoar.
· Mudar. Autoexpect registra cada caractere da interação no script.
Isso é desejável porque dá a você a capacidade de fazer julgamentos sobre
o que é importante e o que pode ser substituído por uma correspondência de padrão.
Por outro lado, se você usar comandos cuja saída difere de execução para execução,
os scripts gerados não estarão corretos. Por exemplo, a "data"
comando sempre produz uma saída diferente. Então, usando o comando date enquanto
executar autoexpect é uma maneira segura de produzir um script que exigirá edição
para que funcione.
O sinalizador -p coloca autoexpect no "modo prompt". Neste modo, a autoexpect irá
olhe apenas para a última linha de saída do programa - que geralmente é o
mensagem. Isso lida com o problema da data (veja acima) e muitos outros.
O exemplo a seguir inicia autoexpect no modo prompt.
expectativa automática -p
O sinalizador -P define uma chave para alternar o modo de prompt. O exemplo a seguir começa
autoexpect (no modo não solicitado) com ^ P como alternador. Observe que o ^ P é
entrou literalmente - ou seja, insira um controle-P real.
autoexpect -P ^ P
O exemplo a seguir inicia autoexpect no modo prompt com ^ P como alternador.
autoexpect -p -P ^ P
OUTROS BANDEIRAS
A -quieto sinalizador desativa mensagens informativas produzidas por autoexpect.
A -Q sinalizador nomeia um caractere de aspas que pode ser usado para inserir caracteres que esperam automaticamente
caso contrário, consumiriam porque são usados como alternadores.
O exemplo a seguir mostra uma série de sinalizadores com aspas usadas para fornecer uma maneira de inserir
os alterna literalmente.
autoexpect -P ^ P -C ^ L -Q ^ Q
ESTILO
Não sei se existe um "estilo" para os programas Expect, mas o autoexpect deve definitivamente
não pode ser considerado qualquer modelo de estilo. Por exemplo, autoexpect usa recursos de Expect
que se destinam especificamente a scripts gerados por computador. Então não tente
escreva fielmente scripts que pareçam ter sido gerados por autoexpect. Isso não é
útil.
Por outro lado, os scripts de autoexpect mostram algumas coisas que valem a pena. Por exemplo, você
pode ver como qualquer string deve ser citada para usá-la em um script Tcl simplesmente executando
as strings por meio de autoexpect.
Use expect_autoexpect online usando serviços onworks.net