Automatizando tarefas shell ao máximo com Expect – FISL 12
Publicado; 04/07/2011 Filed under: FISL, Linux, Português | Tags: expect, fisl, linguagem c, linux, programação, software livre, Ubuntu Leave a comment »No último sábado, apresentei uma palestra no FISL 12 falando sobre automação de tarefas shell, usando a ferramenta Expect.
Nesse post, eu já dei uma prévia do que foi apresentado, e aqui pretendo disponibilizar alguns scripts e os slides usados na palestra.
Neste exemplo, mostrei um pequeno código feito em Linguagem C. O que queria deixar claro com esse exemplo é que um software qualquer, mesmo sem estar preparado, pode ter sua execução automatizada, com o Expect:
#include<stdio.h>
int main(void) {
int numeroQueEuDigitei = 0;
while (numeroQueEuDigitei % 2 == 0) {
printf("Digite um numero par: ");
scanf("%d", &numeroQueEuDigitei);
}
printf("FUUUUUUUUUUUU!n");
}
Para compilar o programa acima, usar o GCC, de maneira bem simples:
gcc -o meuexecutavel meu_codigo_fonte.c
O script do expect que automatiza esse fonte, pode ser algo semelhante a isso:
#!/usr/bin/expect #lanca o programa spawn ./meuexecutavel expect "%par:" send "2r" expect "%par:" send "4r" expect "%par:" send "3r" expect "%UUUUU!"
Assim que a TV Software Livre disponibilizar os vídeos, pretendo disponibilizar por aqui.
Palestra sobre Automação de tarefas Shell no FISL 12
Publicado; 26/06/2011 Filed under: FISL, Português, Software Livre | Tags: expect, fisl, palestra Leave a comment »Este ano irei participar como palestrante do FISL 12, falando sobre automação (ou automatização, é a mesma coisa) de tarefas shell, usando uma ferramenta muito prática e robusta, chamada Expect.
Nesse post eu pretendo colocar algum material adicional e links interessantes para complementar o que será apresentado na palestra.
O Expect usa linguagem TCL para simular a interação com programas de linhas de comando, através de scripts. Isso é uma funcionalidade extremamente útil para automação de tarefas de administração de redes, teste automatizado e integração de sistemas.
A instalação da ferramenta no Ubuntu ocorre da forma mais trivial possível, usando o apt-get.
leandro@jaspion:~$ sudo apt-get install expect
O expect tem um modo interativo, útil para testar seus scripts de maneira prática…
Os scripts TCL para utilização com o expect são bastante legíveis para quem tem algum conhecimento de programação e inglês. O uso de expressões regulares também é interessante para o desenvolvimento de scripts com interações mais complexas.
Existem algumas diretivas simples que sevem para tarefas comuns quando se está automatizando tarefas em shell. São elas: spawn, expect e send. Para ilustrar a maneira com que essas diretivas são usadas, observe a figura abaixo.
Um script que exemplifica o uso dessas diretivas é mostrado abaixo:
# lança a aplicacao que quero interagir spawn ssh localhost # aguarda a apresentação de uma mensagem qualquer, cujo final seja "password:" expect "% password:" #escreve "minha_senha" e pressiona <ENTER> send "minha_senhar" # espera que qualquer mensagem seja mostrada na tela expect "%" # escreve ls -lsa e pressiona <ENTER> send "ls -lsar" expect "%" send "exitr" # finaliza a execução expect eof
É possível também tornar seus scripts executáveis, incluindo o seguinte conteúdo na primeira linha do arquivo (esse é o caminho do expect no Ubuntu, instalado através do apt-get):
#!/usr/bin/expect
Além das diretivas básicas, apresentadas neste post, é possível inserir lógica nos scripts, através de estruturas condicionais, criação de variáveis e procedimentos. Tudo isso vem junto com a sintaxe e as funcionalidades da linguagem TCL. É possível incluir, por exemplo, suporte a Banco de Dados e trabalhar com arquivos externos.
…e se você prefere não usar TCL ?
Existem alternativas ao uso de TCL integrado com o expect. Uma delas é o Pexpect, integrado com a linguagem Python.
Para quem curte PERL, existe o módulo Expexct.pm.
Links interessantes:
- Grade de palestras do FISL 12
- Expect – wikipedia
- Expect – site oficial
- Expect – página no sourceforge
- Pexpect – suporte a scripts em Python
- Lero lero
Palestra aprovada no FISL 12 – Automatizando com Expect
Publicado; 23/05/2011 Filed under: FISL, Linux, Português, Software Livre | Tags: automação, expect, expectk, fisl, linux, palestra, shell, tk, unix Leave a comment »Pelo terceiro ano consecutivo, terei a oportunidade de apresentar uma palestra no Fórum Internacional do Software Livre – FISL 12.
Ano passado tive duas palestras aceitas, uma falando sobre Integração Contínua com Hudson e outra sobre o estado atual (da época) do OpenJDK 7.
Em 2009, na minha primeira participação como palestrante num evento desse porte, falei sobre desenvolvimento de games usando JMonkey Engine e Java.
Este ano vou fugir um pouco da temática de desenvolvimento de software, indo para a área de automação de tarefas, especificamente usando shell e a ferramenta Expect. Ainda não montei meus slides, mas já tenho uma boa noção de como será organizada a palestra e as práticas.
Abaixo a proposta de palestra que foi enviada, na íntegra:
Automatizando tarefas shell ao máximo com o Expect
Este é um tema recorrente para administradores de sistema, programadores, estudantes, enfim, todos os que precisaram, em alguma situação automatizar tarefas de linha de comando.
Expect é uma poderosa e robusta ferramenta de automação de tarefas através de uma sintaxe simplificada mas ao mesmo tempo muito flexível. Com o Expect é possível simular interação com um usuário através de scripts (baseados em TCL) que resolvem os mais diversos tipos de problema do ambiente de linha de comando.
O objetivo desta palestra é apresentar a ferramenta expect através de diversos casos de uso de seus recursos.
Será mostrado na prática como desenvolver desde um login simples através de SSH, simulando a interação com o usuário, até automatizações mais complexas como rotinas de backup e replicação de dados.
Para os participantes é necessário possuir conhecimento básico, nível usuário, de interface de linha de comando e ter noções de lógica de programação estruturada.
Links Interessantes:




