[SP-pm] Automatizando consulta IBM com Perl ou Expect

Frederico Melo fdmmelo at gmail.com
Mon Mar 25 13:13:46 PDT 2013


Oi Márcio, tudo bem?

Voltei! Então... após várias tentativas, debugs e verificação de logs,
consegui navegar pelo servidor IBM através do Perl com Expect. Muito legal
mesmo! Obrigado pelas dicas iniciais! Agora, cheguei na fase de capturar
algumas informações e gravá-las em banco de dados.

Vejo nos arquivos de logs o resultado da função ascii do s3270. Como faço
para pegar alguns dados (não é o print da tela 0,0,24,80 completo) e
armazeno em banco? Pelo Perl e Expect isso é possível de ser feito no mesmo
tempo que navega-se pelas telas do MainFrame IBM?

Hoje meu código é algo assim:


#!/usr/bin/perl

my @s3270 = s3270;

use strict;
use warnings;
use Expect;

my $exp = Expect->spawn('s3270');

$exp->log_file('teste.log');

my $cmd1 = "connect(12.234.123.3:23)\n";
$cmd1 .= "wait(InputField)\n";
$cmd1 .= "String(username)\n";
$cmd1 .= "Enter()\n";
$cmd1 .= "wait(InputField)\n";
$cmd1 .= "String(password)\n";
$cmd1 .= "Enter()\n";
$cmd1 .= "wait(InputField)\n";
$cmd1 .= "String(APL)\n";
$cmd1 .= "Enter()\n";
$cmd1 .= "wait(InputField)\n";
$cmd1 .= "String(CODAPL)\n";
$cmd1 .= "Enter()\n";
$cmd1 .= "pf(3)\n"; #TELA INCIAL APL -> VAI PARA CONSULTAS
$cmd1 .= "wait(InputField)\n";
$cmd1 .= "String(14)\n";
$cmd1 .= "Enter()\n";
$cmd1 .= "wait(InputField)\n";
$cmd1 .= "String(01)\n";
$cmd1 .= "Enter()\n";
$cmd1 .= "String(ordemserv12tt)\n";
$cmd1 .= "Enter()\n";
$cmd1 .= "Ascii(0,0,24,80)\n";

Neste ponto, tenho a tela impressa em memória e no log. Como faço, nessa
etapa, para capturar alguns dados e armazená-los em banco? Não tenho
dificuldades em utilizar DBD ou DBI no perl, minha dificuldade é interagir
o perl com os retornos do s3270 e expect. Seria possível me auxiliar? Já
agradeço pelo precioso apoio1

Obrigado novamente!
Frederico


2013/3/21 Marcio - Google <marciorp at gmail.com>

> Tiago, nesse caso não. A função "string" é do s3270, e ele entende tudo de
> forma literal. Também tropecei nisso.
>
> Frederico, isso. Se não me engano, para "entrar" o comando é ENTER.
> Se não funcionar posta novamente que vou ver com fiz.
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130325/ca98e237/attachment.html>


More information about the SaoPaulo-pm mailing list