A palestra do Leandro Nunes (@nunesleandro, http://leandronunes.org) foi interessante, mais informativa que a do ano passado, quando me decepcionei. Não que desta vez não tenha me decepcionado, mas pelo menos o Leandro usou o tempo melhor, e falou um pouco mais do expect, embora *pra mim* ainda não tenha sido o suficiente. Ele poderia, por exemplo, ter mostrado um exemplo de código ocultando textos sensíveis como senhas, que por padrão são enviados em texto plano pelo expect.
Bom, mas vamos às informações importantes da palestra.
O Leandro mostrou a sequência básica spawn/expect/send, deixando claro que o uso da ferramenta é bastante simples. O spawn faz a execução do comando desejado, o expect aguarda por uma sequência de caracteres para acionar o send, que envia o texto desejado (comandos, senhas, etc). Abaixo segue o exemplo demonstrado na apresentação:
#!/bin/bash
spawn ssh localhost
set timeout 5
expect "% password:"
send "minha senha\r"
expect "%"
send "ls -lsa\r"
expect "%"
send "exit\r"
expect eof
O Leandro explicou ainda que o script pode ser iniciado com a linha "#!/usr/bin/expect" para acionar diretamente a execução sem a necessidade de acionar o expect na linha de comando. Nos testes que fiz foi necessário adicionar um parâmetro "-f" na linha indicada, de forma que o resultado seria "#!/usr/bin/expect -f". Assim é possível executar o script diretamente (./script).
Outra informação importante é o fato de que scripts para o expect devem ser feitos em TCL, portanto esqueça variáveis de ambiente como $1 para pegar parâmetros da linha de comando. É necessário utilizar a variável argv, através de comandos como "set user [lindex $argv 0]", o que faz com que o primeiro parâmetro indicado na linha de comando seja colocado na variável $user.
A apresentação está disponível no site do Leandro, mas para quem quer mais informação sobre o expect, recomendo uma olhada na Wikipedia, e para informações sobre como criptografar senhas para uso com o expect, este artigo pode ser útil.
Siga-nos no Twitter! ou Buzz
Receba os textos via e-mail ou RSS!
Confira outros textos sobre o tema!
Há tempos eu venho precisando disto! Já bati muito a cabeça, inclusive acho que tinha brincado com este expect, mas isso tem uns 2 anos já. Não funcionava bem como eu precisava. Pelo jeito agora tá beleza! Vou experimentar aqui, valeu a dica!
ResponderExcluir