A interação humana no expect é usada por pattern match: $exp->expect($timeout, [ timeout => \&report_timeout ], [ qr/pattern/ => \&handle_pattern], );
Ex: #efetua login my @parameters = ('host') Expect->spawn('telenet' , @parameters) $exp->expect($timeout, [ qr/username/ => sub { my $self = shift; $self->send('usuario\n'); return 'exp_continue'}], [qr/password/ => sub { my $self = shift; $self->send('password\n'); return 'exp_continue'} ], 'bash$'); #agora você está no servidor e pode enviar comandos: $exp->send("comando1\n") #e definir ações conforme padrões de texto da saída do comando. $exp->expect($timeout, [ qr/pattern1/ => sub { my $self = shift; ...ação 1 ...isso é uma sub. ..você pode fazer qualquer coisa aqui}], [qr/pattern2/ => sub { my $self = shift; ...ação 2} ], 'bash$'); #e fazer o mesmo para n comandos. $exp->send("comando2\n") No Net::Telnet você pode verificar o array de saída para decidir a ação a ser tomada: #conecta my $telnet = Net::Telnet->new( Host => "Servidor", Prompt => '/fulano#/'); $telnet->login('usuario','senha'); #verifica se o diretório dir1 existe e muda o pwd #para dir1. Se dir1 não existir sera criado' my @saida = $telnet->cmd('ls -a'); if ('dir1' ~~ @saida) { $telnet->cmd( 'cd dir1/');} else { $telnet->cmd( 'mkdir dir1' ); $telnet->cmd( 'cd dir1/' ); } espero ter ajudado. abraços. thiago glauco On Sat, 2013-03-09 at 13:16 -0400, Marcio - Google wrote: > Sim, mais a conexão e o ponto menos relevante nesse caso. O problema é > simular a interação e tratar "mapa de caracteres". > Na verdade, nos primeiros testes que fiz, tentei conectar com o > cliente de telnet padrão, e não funciona. Tem que ser um cliente > próprio, que no caso eu usei o s3270. > > Em 09/03/2013 13:09, "thiago glauco sanchez" > <thiagogla...@ticursos.net> escreveu: > Humm...Se é para fazer telnet eu usaria o Net::Telnet em vez > do Expect. > Algumas vezes eu utilizei o Expect e ele é um pouco mais > demorado por > que utiliza o processo externo do telnet. No Net::Telnet, é > criado o > cliente dentro do processo de sua aplicação. Mais rápido e > seguro. > > On Thu, 2013-03-07 at 14:33 -0300, Frederico Melo wrote: > > Sr(a)s., Obrigado pela disponibilidade de alguns com os > quais > > conversei *em paralelo* e me orientaram a postar aqui... > Segue abaixo > > um resumo da minha dor de cabeça: > > > > Chamo-me Frederico, tenho alguns conhecimentos em PHP, Perl, > MySQL e > > Linux. Aqui na empresa, trabalho com desenvolvimento e até o > momento > > não tive problemas mas, surgiu um projeto que estou > responsável onde > > será necessário coletar uma série de informações em um > mainframe IBM, > > processá-las e armazená-las em MySQL. Apresentarei os dados > em HTML. > > Então, gostaria muito de uma orientação para: > > > > 1 - com um servidor Linux sem interface gráfica, acessar o > servidor > > IBM através de telnet na porta 23; > > 2 - capturar alguns dados nesse IBM e armazená-los em MySQL > > 3 - após capturar os dados, devo escrever alguns comandos no > IBM ou > > seja, o programa deve ser de mão-dupla (lê e escrever no IBM > > utilizando usuário conhecido nesse ambiente); > > 4 - toda interface existente para o IBM é feita por > aplicativos no > > Windows (Winsock 3270 Telnet, QWS3270) > > 5 - tenho instalado no servidor Linux expect, php, perl, > mysql > > > > Penso em desenvolver algo com perl, expect, s3270 etc mas, > > sinceramente não sei qual a melhor solução. > > Tenho facilidade em aprender sozinho mas, preciso de um > exemplo > > inicial onde eu possa testar e verificar o resultado do que > está sendo > > feito. À partir daí, customizo e tento implementar. > > > > No momento, estou CEGO caminhando em um terreno novo, sem > saber muito > > bem por onde começar... > > Não tenho muita familiaridade com o Expect, nem com o s3270. > Socorro e > > desculpem-me pela minha ignorância! > > > > Aprecio muito qualquer ajuda para eu começar. > > Obrigado! > > > > Frederico > > =begin disclaimer > > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > > SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org > > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > > =end disclaimer > > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer =begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer