[SP-pm] Perl para automação em acesso a x3270 IBM
Marcio - Google
marciorp at gmail.com
Wed Jul 11 19:39:18 PDT 2012
Olá Prof. Eden,
Montei esse primeiro exemplo, tipo "Olá mundo!", mais esbarrei em um
erro que não consigo resolver.
#!/usr/bin/perl
use strict;
use warnings;
use Expect;
my $exp = Expect->spawn('s3270');
$exp->log_file('/home/marcio/teste3.log');
my $cmd1 = "connect(10.1.8.192:23)\n";
$cmd1 .= "wait(InputField)\n";
$exp->send($cmd1);
$exp->expect(100, [qr/.{1920}/ => sub {
my($self) = @_;
print $self->match;
exp_continue;
},
timeout => sub { die 'o sistema parou de responder' }
]
)
Roda certinho, pelo menos não dá erro nenhum, o problema é que como se
no lugar do "\n" no final dos comandos, ele trocasse por "^M", e ai dá
erro no s3270. No mesmo exemplo usando o IPC::Run não acontece isso.
Veja a saída no terminal:
connect(10.1.8.192:23)^M
wait(InputField)^M
L U U N N 4 24 80 0 0 0x0 0.024^M
error^M
data: Wait: Not connected^M
L U U N N 4 24 80 0 0 0x0 -^M
error^M
E o arquivo de log (/home/marcio/teste3.log):
connect(10.1.8.192:23)^M
wait(InputField)^M
L U U N N 4 24 80 0 0 0x0 0.026
error
data: Wait: Not connected
L U U N N 4 24 80 0 0 0x0 -
error
Tem alguma ideia?
Em tempo, essa expressão (qr/.{1920}/) pega o retorno com 1920
caracteres. Vou colocar várias expressões, agora como faço uma tipo
"default", se não casar com nenhuma das anteriores cai nessa última?
Desculpe a lerdeza, mais é que como disse não sou programador, tó
quebrando um galho para resolver um problema do meu sistema Asterisk.
Abs,
Marcio.
More information about the SaoPaulo-pm
mailing list