Oi Márcio, Obrigado pela atenção. Eu peguei alguns daqueles códigos e rodei no meu servidor.. Não consegui entender pelos códigos como passo o usuário e a senha para ele se logar no IBM então, parei nesse ponto. Não cheguei a testar mais do que isto. Como estou desenvolvendo dois sistemas em paralelo, fiquei sobrecarregado com outra demanda e não pude evoluir. Se puder me ajudar, agradeço mesmo!
Obrigado! 2013/3/12 Marcio - Google <[email protected]> > Você já usou aqueles códigos/exemplos? > Qual foi o resultado? > Em 12/03/2013 08:06, "Frederico Melo" <[email protected]> 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 <[email protected]> >> >>> 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" >>> > <[email protected]> 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" >>> > > <[email protected]> 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: [email protected] >>> > > > >>> > 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: [email protected] >>> > > 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: [email protected] >>> > > 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: [email protected] >>> > 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: [email protected] >>> > 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: [email protected] >>> 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: [email protected] >> 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: [email protected] > 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: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
