[SP-pm] Automatizando consulta IBM com Perl ou Expect
Marcio - Google
marciorp at gmail.com
Sat Mar 9 12:38:44 PST 2013
Thiago, o que estou te dizendo é que com cliente telnet comum você não
conecta no mainframe, pelo menos eu não consegui. Por isso que fui atrás de
outro cliente.
Acho que o Eden sabe explicar o motivo.
Em 09/03/2013 16:09, "thiago glauco sanchez" <thiagoglauco em ticursos.net>
escreveu:
> 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"
> > <thiagoglauco em 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 em 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 em 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 em 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 em pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130309/ce1b215d/attachment-0001.html>
More information about the SaoPaulo-pm
mailing list