<p>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.<br>
Acho que o Eden sabe explicar o motivo.</p>
<div class="gmail_quote">Em 09/03/2013 16:09, "thiago glauco sanchez" <<a href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>> escreveu:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
A interação humana no expect é usada por pattern match:<br>
<br>
    $exp->expect($timeout,<br>
                 [ timeout => \&report_timeout ],<br>
                 [ qr/pattern/ => \&handle_pattern],<br>
                );<br>
<br>
Ex:<br>
#efetua login<br>
my @parameters = ('host')<br>
Expect->spawn('telenet' , @parameters)<br>
    $exp->expect($timeout,<br>
        [ qr/username/ => sub { my $self = shift;<br>
                                $self->send('usuario\n');<br>
                                return 'exp_continue'}],<br>
        [qr/password/ => sub { my $self = shift;<br>
                                $self->send('password\n');<br>
                                return 'exp_continue'} ],<br>
        'bash$');<br>
<br>
<br>
#agora você está no servidor e pode enviar comandos:<br>
$exp->send("comando1\n")<br>
<br>
#e definir ações conforme padrões de texto da saída do comando.<br>
$exp->expect($timeout,<br>
        [ qr/pattern1/ => sub { my $self = shift;<br>
                                ...ação 1<br>
                                ...isso é uma sub.<br>
                                ..você pode fazer qualquer coisa aqui}],<br>
        [qr/pattern2/ => sub { my $self = shift;<br>
                                ...ação 2} ],<br>
        'bash$');<br>
#e fazer o mesmo para n comandos.<br>
$exp->send("comando2\n")<br>
<br>
No Net::Telnet você pode verificar o array de saída para decidir a ação<br>
a ser tomada:<br>
<br>
#conecta<br>
my $telnet = Net::Telnet->new( Host => "Servidor",<br>
                               Prompt => '/fulano#/');<br>
$telnet->login('usuario','senha');<br>
<br>
#verifica se o diretório dir1 existe e muda o pwd<br>
#para dir1. Se dir1 não existir sera criado'<br>
my @saida = $telnet->cmd('ls -a');<br>
if ('dir1' ~~ @saida) {<br>
        $telnet->cmd( 'cd dir1/');}<br>
else {<br>
        $telnet->cmd( 'mkdir dir1' );<br>
        $telnet->cmd( 'cd dir1/' ); }<br>
<br>
espero ter ajudado.<br>
<br>
abraços.<br>
thiago glauco<br>
<br>
<br>
On Sat, 2013-03-09 at 13:16 -0400, Marcio - Google wrote:<br>
> Sim, mais a conexão e o ponto menos relevante nesse caso. O problema é<br>
> simular a interação e tratar "mapa de caracteres".<br>
> Na verdade, nos primeiros testes que fiz, tentei conectar com o<br>
> cliente de telnet padrão, e não funciona. Tem que ser um cliente<br>
> próprio, que no caso eu usei o s3270.<br>
><br>
> Em 09/03/2013 13:09, "thiago glauco sanchez"<br>
> <<a href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>> escreveu:<br>
>         Humm...Se é para fazer telnet eu usaria o Net::Telnet em vez<br>
>         do Expect.<br>
>         Algumas vezes eu utilizei o Expect e ele é um pouco mais<br>
>         demorado por<br>
>         que utiliza o processo externo do telnet. No Net::Telnet, é<br>
>         criado o<br>
>         cliente dentro do processo de sua aplicação. Mais rápido e<br>
>         seguro.<br>
><br>
>         On Thu, 2013-03-07 at 14:33 -0300, Frederico Melo wrote:<br>
>         > Sr(a)s., Obrigado pela disponibilidade de alguns com os<br>
>         quais<br>
>         > conversei *em paralelo* e me orientaram a postar aqui...<br>
>         Segue abaixo<br>
>         > um resumo da minha dor de cabeça:<br>
>         ><br>
>         > Chamo-me Frederico, tenho alguns conhecimentos em PHP, Perl,<br>
>         MySQL e<br>
>         > Linux. Aqui na empresa, trabalho com desenvolvimento e até o<br>
>         momento<br>
>         > não tive problemas mas, surgiu um projeto que estou<br>
>         responsável onde<br>
>         > será necessário coletar uma série de informações em um<br>
>         mainframe IBM,<br>
>         > processá-las e armazená-las em MySQL. Apresentarei os dados<br>
>         em HTML.<br>
>         > Então, gostaria muito de uma orientação para:<br>
>         ><br>
>         > 1 - com um servidor Linux sem interface gráfica, acessar o<br>
>         servidor<br>
>         > IBM através de telnet na porta 23;<br>
>         > 2 - capturar alguns dados nesse IBM e armazená-los em MySQL<br>
>         > 3 - após capturar os dados, devo escrever alguns comandos no<br>
>         IBM ou<br>
>         > seja, o programa deve ser de mão-dupla (lê e escrever no IBM<br>
>         > utilizando usuário conhecido nesse ambiente);<br>
>         > 4 - toda interface existente para o IBM é feita por<br>
>         aplicativos no<br>
>         > Windows (Winsock 3270 Telnet, QWS3270)<br>
>         > 5 - tenho instalado no servidor Linux expect, php, perl,<br>
>         mysql<br>
>         ><br>
>         > Penso em desenvolver algo com perl, expect, s3270 etc mas,<br>
>         > sinceramente não sei qual a melhor solução.<br>
>         > Tenho facilidade em aprender sozinho mas, preciso de um<br>
>         exemplo<br>
>         > inicial onde eu possa testar e verificar o resultado do que<br>
>         está sendo<br>
>         > feito. À partir daí, customizo e tento implementar.<br>
>         ><br>
>         > No momento, estou CEGO caminhando em um terreno novo, sem<br>
>         saber muito<br>
>         > bem por onde começar...<br>
>         > Não tenho muita familiaridade com o Expect, nem com o s3270.<br>
>         Socorro e<br>
>         > desculpem-me pela minha ignorância!<br>
>         ><br>
>         > Aprecio muito qualquer ajuda para eu começar.<br>
>         > Obrigado!<br>
>         ><br>
>         > Frederico<br>
>         > =begin disclaimer<br>
>         >    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>         >  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>         >  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>         > =end disclaimer<br>
><br>
><br>
>         =begin disclaimer<br>
>            Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>          SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>          L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>         =end disclaimer<br>
> =begin disclaimer<br>
>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
> =end disclaimer<br>
<br>
<br>
=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</blockquote></div>