e se vc fizer "String(user1\n)\n"
resolve? 2013/3/21 Frederico Melo <fdmm...@gmail.com> > 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 <fdmm...@gmail.com> > >> 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 <marci...@gmail.com> >> >>> 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: 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 > > -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj
=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