[Rio-pm] obtendo dados do HTTP header atraves de proxy

Marco A P D'Andrade mdacwb em gmail.com
Quarta Março 13 01:26:43 PDT 2013


Ja debugou o codigo perl?

Passei correndo aqui, mas me parece que este parametro nao vai funcionar
nunca ;)
my $host = "ftp://hgdownload.cse.ucsc.edu/goldenPath/ce4/database/";

tenta trocar por:
my $host = "hgdownload.cse.ucsc.edu<ftp://hgdownload.cse.ucsc.edu/goldenPath/ce4/database/>
";

e depois...  um
cwd("/goldenPath/ce4/database/<ftp://hgdownload.cse.ucsc.edu/goldenPath/ce4/database/>")
antes do size!


Em algum ponto do debug, em 30 segundos... eu achei esta chamada:
  DB<2>
IO::Socket::new(/usr/lib/perl/5.14/IO/Socket.pm:48):
48:         return scalar(%arg) ? $sock->configure(\%arg)
49:                             : $sock;
  DB<2> x \%arg
0  HASH(0x1c7d808)
   'LocalAddr' => undef
*   'PeerAddr' => 'http://10.46.10.19:3129'*
   'PeerPort' => 'ftp(21)'
   'Proto' => 'tcp'
  DB<3> n
Cannot connect to some.host.name: Net::FTP: Bad hostname '*
http://10.46.10.19:3129*' at f line 3.
 at f line 3


Sendo mais efetivo...
 Vc tem e usar hostname ou ip em Host!
 Você tem de fazer login
 Você pode mudar o diretorio corrente, ou buscar pelo site do path completo
do arquivo !
 Você tem de usar o valor de size para saber que funcionou ;)
 Gerência de mudanças... primeiro tem de funcionar sem proxy, depois vc
testa com ele!

Segue uma versão sem proxy funcionando...

PS: Desculpe meu mal humor... mas perdi o sono :(

use Net::FTP;
my $host = "hgdownload.cse.ucsc.edu";
my $ftp = Net::FTP->new($host) #, Firewall => 'http://10.46.10.19:3129')
    or die "Cannot connect to some.host.name: $@";

$ftp->login("anonymous",'-anonymous@')
    or die "Cannot login ", $ftp->message;

$ftp->cwd("/goldenPath/ce4/database/");
$ftp->binary;
print $ftp->size("all_est.txt.gz")
    or die "get failed ", $ftp->message;
$ftp->quit;
exit;



Att,
Marco Andrade


Em 11 de março de 2013 14:51, Nicole Scherer
<bionica2007-perl em yahoo.com>escreveu:

> Oi Renato e Tiago,
>
> usando as instruções do pacote no cpan, eu obtive isto:
>
> use Net::FTP;
> my $host = "ftp://hgdownload.cse.ucsc.edu/goldenPath/ce4/database/";
> my $ftp = Net::FTP->new($host, Firewall => 'http://10.46.10.19:3129')
>     or die "Cannot connect to some.host.name: $@";
> $ftp->size("all_est.txt.gz")
>     or die "get failed ", $ftp->message;
> $ftp->quit;
> exit;
>
> -------------------------------
>
> - Primeira tentativa:
> $ time perl teste_proxy.pl
> Cannot connect to some.host.name: Net::FTP: Bad hostname '
> http://10.46.10.19:3129' at teste_proxy.pl line 18.
>
>
> - Segunda tentativa, tirando o http:// do proxy:
> $ perl teste_proxy.pl
> Cannot connect to some.host.name:  at teste_proxy.pl line 18.
>
> - em alguma tentativa, também obtive isto:
> $ perl teste_proxy.pl
> Cannot connect to some.host.name: Net::FTP: Bad hostname '
> ftp://hgdownload.cse.ucsc.edu/goldenPath/ce4/database/' at teste_proxy.plline 18.
>
> -------------------------------
>
> Alguma ideia, sobre o que estou fazendo errado?
>
> []'s
> Nicole
>
>   ------------------------------
> *De:* Renato Santos <renato.cron em gmail.com>
> *Para:* Nicole Scherer <bionica2007-perl em yahoo.com>
> *Cc:* Perl Mongers Rio de Janeiro <rio-pm em pm.org>
> *Enviadas:* Sexta-feira, 8 de Março de 2013 17:13
>
> *Assunto:* Re: [Rio-pm] obtendo dados do HTTP header atraves de proxy
>
> Então você precisa verificar o seu proxy.
>
> Mas como o Tiago disse,
>
> porque vocẽ não conecta usando Net::FTP ? Ele tem modo anomimo.
>
>
>
> 2013/3/8 Nicole Scherer <bionica2007-perl em yahoo.com>
>
> Sim, Renato,
>
> usando o  LWP::Simple::get($downloadfile) eu consigo baixar o arquivo
> inclusive através do proxy.
> Só o conteúdo do LWP::Simple::head($downloadfile) é que não é o mesmo com
> ou sem proxy.
> Não sei se é porque ele usa o head() do LWP::UserAgent, quando acionado o
> $ua para o proxy.
>
> []'s
> Nicole
>
>
>    ------------------------------
> *De:* Renato Santos <renato.cron em gmail.com>
> *Para:* Nicole Scherer <bionica2007-perl em yahoo.com>; Perl Mongers Rio de
> Janeiro <rio-pm em pm.org>
> *Enviadas:* Sexta-feira, 8 de Março de 2013 17:01
> *Assunto:* Re: [Rio-pm] obtendo dados do HTTP header atraves de proxy
>
> Existe a possibilidade do seu proxy não estar repassando essas informações
> ou estar negando o acesso.
>
> Você já tentou baixar o arquivo com o proxy ?
>
> 2013/3/8 Nicole Scherer <bionica2007-perl em yahoo.com>
>
> Oi Mongers,
>
> venho humildemente consultar o vasto conhecimento de vocês em prol da
> pesquisa científica.
>
> Preciso consultar o tamanho de um arquivo em um servidor ftp, antes de
> decidir se o arquivo deverá ou não ser baixado.
> Eu estava usando o LWP::Simple::head($url) para isto, e estava funcionando
> bem, até eu ter que usá-lo através de um proxy.
> O que acontece é o seguinte, usando sem proxy, eu consigo acessar as
> informações sobre tamanho, formato, codificação, etc,
>
>
> my $downloadfile = "
> ftp://hgdownload.cse.ucsc.edu/goldenPath/ce4/database/all_est.txt.gz";
> my ($content_type, $document_length, $modified_time, $expires, $server) =
> LWP::Simple::head($downloadfile);
>
> --- ou
>
> if (my $res = LWP::Simple::head($downloadfile)) {
>     print "$downloadfile ok\n"; ### debug
>     p($res->{_headers});
> } else {
>     print "$downloadfile not available\n"; ### debug
> }
>
>
> --- e quando uso
>
> use LWP::Simple qw($ua head);
> $ua->proxy([qw(http ftp wais)], 'http://10.46.10.19:3129');
>
> para definir o proxy, ele não retorna estas informações.
>
>
> Se eu mandar imprimir $res->{_headers}, tenho isso:
>
> --- rodando sem proxy
>
> HTTP::Headers  {
>     public methods (38) : as_string, authorization, authorization_basic,
> clear, client_date, content_encoding, content_is_html, content_is_text,
> content_is_xhtml, content_is_xml, content_language, content_length,
> content_type, content_type_charset, date, expires, from, header,
> header_field_names, if_modified_since, if_unmodified_since, init_header,
> last_modified, new, proxy_authenticate, proxy_authorization,
> proxy_authorization_basic, push_header, referer, referrer,
> remove_content_headers, remove_header, scan, server, title, user_agent,
> warning, www_authenticate
>     private methods (5) : _basic_auth, _date_header, _header,
> _process_newline, _sorted_field_names
>     internals: {
>         client-date         =>  "Fri, 08 Mar 2013 19:33:58 GMT",
>         client-request-num  =>  1,
>         content-encoding    =>  "gzip",
>         content-length      =>  14169205,
>         content-type        =>  "text/plain",
>         last-modified       =>  "Mon, 14 Mar 2011 16:52:05 GMT",
>         server              =>  "FTP Server"
>     }
> }
>
>
>
> --- com proxy
> HTTP::Headers  {
>     public methods (38) : as_string, authorization, authorization_basic,
> clear, client_date, content_encoding, content_is_html, content_is_text,
> content_is_xhtml, content_is_xml, content_language, content_length,
> content_type, content_type_charset, date, expires, from, header,
> header_field_names, if_modified_since, if_unmodified_since, init_header,
> last_modified, new, proxy_authenticate, proxy_authorization,
> proxy_authorization_basic, push_header, referer, referrer,
> remove_content_headers, remove_header, scan, server, title, user_agent,
> warning, www_authenticate
>     private methods (5) : _basic_auth, _date_header, _header,
> _process_newline, _sorted_field_names
>     internals: {
>         client-date          =>  "Fri, 08 Mar 2013 19:36:13 GMT",
>         client-peer          =>  "10.46.10.19:3129",
>         client-response-num  =>  1,
>         connection           =>  "close",
>         date                 =>  "Fri, 08 Mar 2013 19:35:52 GMT"
>     }
> }
>
>
>
> Ele simplesmente não cria/recebe content-encoding, content-length,
> content-type, last-modified e server.
> Só o que eu preciso mesmo é o content-length.
>
> By the way, o LWP::UserAgent  head() não me informa o tamanho do arquivo.
> Pelo menos não nos meus testes.
>
> Vocês conhecem alguma outra maneira de obter a informação de tamanho do
> arquivo sem ter que baixá-lo?
> Acessando o directory listing também não dá, porque através do proxy, o
> formato que ele retorna varia em cada sistema (pelo menos foi o que eu
> observei. me corrijam se eu estiver errada).
>
>
> Obrigada!
>
> Abraços,
> Nicole
>
>
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
>
>
> --
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#!/renato_cron>
>
>
>
>
>
> --
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#!/renato_cron>
>
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
Att,
--
Marco Andrade
Celular: (21)8178-5201 - Tim
Skype: marco.antonio.dandrade
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20130313/d78fee14/attachment-0001.html>


Mais detalhes sobre a lista de discussão Rio-pm