Olá Márcio, tudo bem? Voltei mestre! Bom, agora com um pouco mais de informação e bastante dúvida! Li os posts que você trocou com o Eden e, para minha tristeza, não encontrei ainda uma maneira de solucionar o meu problema. Mas, nem tudo está perdido pois estou no caminho certo!
Segui seus exemplos e, fiz aqui no trabalho um debug no ambiente e notei algumas coisas: 1 - meu programa em Perl está funcionando ok e interagindo com o expect que, por sua vez dispara o s3270 (fiz um exemplo bem básico para logar no IBM e me retornar a tela de login); 2 - assim como seu exemplo, recebi todas as strings de conexão retornados pelo s3270, linhas no formato U F U C(192.164.123.130) I 4 24 80 15 28 0x0... OK! Muito interessante! 3 - passo os comandos do tipo: my $cmd1 = "connect(10.4.23.30:23)\n"; $cmd1 .= "wait(InputField)\n"; $cmd1 .= "String(user1)\n"; para usuário e o mesmo equivalente para senha $cmd1 .= "wait(InputField)\n"; $cmd1 .= "String(password)\n"; $cmd1 .= "Ascii(0,0,24,80)\n"; Nesse ponto, notei que o s3270 não reconhece o "\n" como "enter"... no meu caso, diferente do seu, o usuário para o IBM não possui a quantidade máxima de caracteres para esse campo (geralmente 8). O usuário possui apenas 5 caracteres e, preciso que seja enviado para o s3270 o "enter" para que ele passe para o outro campo de senha. Pelo output com a função ascii, notei no arquivo de log que, o campo user é preenchido utilizando o valor passado user1 e mais os próximos 3 caracteres do segundo comando string... fica algo assim: data: Userid .............. user1pas Voce e' responsavel pelos atos praticados data: Senha ............... com o seu codigo de usuario, portanto E não há envio de "enter" !!! Tem alguma dica? Por favor Márcio, fico muito grato da sua ajuda e atenção! Abc aos Mestres! Frederico 2013/3/14 Frederico Melo <[email protected]> > Márcio! Você tem toda razão! Realmente estou muito sobrecarregado mas, > estou em fase de finalização da outra demanda. Por incrível que pareça, > essa pequena ajuda que me deu no exemplo abaixo irá ajudar bastante! Vou > anotar aqui e acompanhar pela sua explicação. Tão logo finalize e coloque > em produção o outro sistema, irei me aprofundar com dedicação exclusiva > para a automação do IBM e, seu exemplo vai ajudar muito. > > Muito obrigado pela explicação de cada linha! Esclareceu bastante! Muito > obrigado e desculpe o incômodo! Com certeza, dentro em breve contatarei o > forum novamente e, se não se incomodar, vou lhe perguntar outras coisas > mas, preciso caminhar sozinho para ver as dúvidas! > > Muito obrigado Márcio! > > Abc, > Frederico > > 2013/3/13 Marcio - Google <[email protected]> > >> Frederico, >> >> Desculpe-me, mais se você não arrumar tempo para tentar e tentar, não >> vai evoluir mesmo. Isso que está fazendo é bem complicado mesmo, e não tem >> receita de bolo, pois quase ninguém usa, além do que como se trata de >> posicionamento de tela e tal, vária de ambiente para ambiente, não tenho >> como fazer por você. >> >> Sobre o usuário e senha: >> my $exp = Expect->spawn('s3270'); ## >> my $cmd1 = "connect(10.1.8.192:23)\n"; ## Conectei no servidor, >> esse ai é o IP. >> $cmd1 .= "wait(InputField)\n"; ## Aqui estou aguardando um >> campo de entrada, no meu caso o cursor já cai no campo do usuário >> $cmd1 .= "String(usertest)\n"; ## Aqui eu "digito" na tela do >> terminal o nome do usuário, no meu caso é "usertest" >> $cmd1 .= "wait(InputField)\n"; ## Aguardo o próximo campo de >> entrada, que no meu caso é a senha. Como no meu ambiente todos os usuário >> tem tamanho fixo e ocupam o campo todo, quando insiro o nome do usuário o >> cursor do terminal já cai para o próximo campo, que é a senha >> $cmd1 .= "String(passtest)\n"; ## Digito a senha, que no meu >> caso é "passtest" >> $cmd1 .= "Ascii(0,0,24,80)\n"; ## Leio a tela >> >> Aquele código do histórico tem tudo que você precisa para fazer os >> primeiros e segundos testes. A documentação do s3270 tem os comando que >> você precisa para interagir com o terminal, isso não é Perl, é TN3270. >> A explicação do Eden também vai ajudar muito a tratar as primeiras >> saídas. >> >> Depois disso, poste as dificuldades, de preferência com o código que >> você usou e os erros ou dúvidas. >> >> >> [...]'s >> >> Marcio >> >> =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
