Você já usou aqueles códigos/exemplos? Qual foi o resultado? Em 12/03/2013 08:06, "Frederico Melo" <fdmm...@gmail.com> escreveu:
> Thiago, > O Márcio teve a mesma necessidade que eu tenho atualmente. Penso em > desenvolver algo como ele pois, o acesso ao mainframe que possuo é através > de aplicações como o QWS3270. Apesar do acesso ser via Telnet, o mainframe > me retorna uma série de caracteres e menus onde navego através de teclas > como PF1, PF2, etc... Minha necessidade é estabelecer a conexão, navegar no > servidor e buscar alguns dados e armazená-los em banco. O servidor > mainframe não retorna prompt para comandos. Toda navegação é feita através > de menus pré-estabelecidos e teclas com funções associadas. A navegação > deve ser feita (imagino), através de posicionamento de strings dentro da > tela (ex.: posição para login->Userid coluna 20, linha 160, campo com 8 > caracteres). Veja exemplo do print da tela do QWS3270: > > EMXXYY > EEEEEEE MM MM BBBBBBB RRRRRRR EEEEEEEE SSSSSS AAAAAAAA > EE MMM MMM BB BB RR RR EE SS SS AA AA > EE MM MMM MM BB BB RR RR EE SS AA AA > EEEEE MM M MM BBBBBB RRRRRRR EEEEEEEE SSSSSS AAAAAAAAAA > EE MM MM BB RR RR EE SS AA AA > EE MM MM BB RR RR EE SS SS AA AA > EEEEEEE MM MM BB RR RR EEEEEEEE SSSSSS AA AA > > > ACESSO AOS SERVICOS DO IBM Data....: > 12.03.13 > Hora....: > 08.50.59 > Identifique-se fornecendo: Terminal: > XXX393939 > > Userid .............. Voce e' responsavel pelos atos > praticados > Senha ............... com o seu codigo de usuario, > portanto > Codigo do servico.... para a sua seguranca, NAO FORNECA > SUA > Grupo ............... SENHA PARA NINGUEM. > Nova Senha .......... > > Atencao: Em caso de problema telefone para XXX DA SUA LOCALIDADE ou > PF 1=Help (xxx)xxx ou 0800-xxx ( HELP-DESK ) > > > Márcio, > Li alguns posts antigos onde você e Eden evoluíram muito sobre o expect, o > s3270 e a manipulação dos dados. Sou muito cru no perl, no s3270 e no > expect. Se você puder me passar o que você desenvolveu me ajudaria muito. > Eu utilizaria como exemplo e tentaria customizar por aqui, dentro da minha > necessidade. > > Estou realmente precisando de ajuda ainda mais por estar envolvido em > outros projetos e com pouco tempo para pesquisa. Toda a ajuda de vocês é > muito válida! Agradeço já! > > Abraços, > Fred > > > 2013/3/9 thiago glauco sanchez <thiagogla...@ticursos.net> > >> Entendi. Dei uma pesquisada. De acordo com o IETF o TN3270 tem >> diferenças do tty padrão: >> >> "3270 display terminal data differs from traditional display terminal >> data in that it is block mode and uses EBCDIC instead of ASCII >> character representation. These two differences are the primary >> reason for the differentiation of TN3270 from standard Telnet in this >> document." >> >> Então, >> Expect->spawn('s3270' , @parameters) deve funcionar como no exemplo do >> e-mail anterior. >> >> De qualquer forma acho que isso pode te ajudar: >> >> >> http://www.linuxquestions.org/questions/linux-software-2/how-do-i-use-s3270-x3270-for-scripting-767067/ >> >> >> espero ter ajudado. >> abraços >> Thiago Glauco >> >> On Sat, 2013-03-09 at 16:38 -0400, Marcio - Google wrote: >> > 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" >> > <thiagogla...@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" >> > > <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 >> > =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