[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