[perl] otra duda
Salvador Ortiz Garcia
sog@msg.com.mx
Mon, 1 Feb 1999 14:32:42 -0600 (EST)
On Sat, 30 Jan 1999, Manuel Pérez López wrote:
> Buenas:
>
> El otro día, me encontré una página que, tras darle la url de mi
> página, me sacó por pantalla este trozo de texo:
>
> $ Conectando con www.arrakis.es
> $ Solicitando página http://www.arrakis.es/~mapelo/portada.htm
> $ Respuesta de www.arrakis.es: HTTP/1.1 200 OK
>
> por lo que supuese que estaba comprobando la existencia de tal página.
>
> El proceso que sigue me ha interesado muchisimo, ya que yo tambien
> quisiera programar algún sencillo script en Perl que pudiera comprobar
> la existencia de páginas. ¿Alguien tiene idea de como empezar?
En CPAN <http://www.perl.com/CPAN/> encuentras libwww-perl que tiene todo
lo que quieras y más para comunicarte con un servidor de WEB.
Ahora que si quieres _entender_ el asusto leete la documentación del
protocolo HTTP 1.1 que puedes encontrar en <http://www.w3.org/Protocols/>
Al final un mini script que comprueba a pata (sin usar módulos extras) la
existencia de una página sin traer su contenido y para usarse como:
$ ./chkpage www.w3.org/Protocols/
Probando conexión con 'www.w3.org'
Solicitando '/Protocols/'
Status: 200 OK
Protocolo: HTTP/1.1
Extra headers:
Date: Mon, 01 Feb 1999 20:19:15 GMT
Server: Apache/1.2.6
Last-Modified: Thu, 28 Jan 1999 14:15:58 GMT
ETag: "2f3d64e8-4b89-36b0711e"
Content-Length: 19337
Accept-Ranges: bytes
Connection: close
Content-Type: text/html; charset=ISO-8859-1
Saludos
Salvador Ortiz
=========== CUT ===========
#!/usr/bin/perl -w
use IO::Socket::INET;
my $CRNL = "\015\012"; # por portabilidad
my ($addr, $URI) = split('/',$ARGV[0],2);
print "Probando conexión con '$addr'\n";
my $sock = IO::Socket::INET->new(PeerAddr => $addr,
PeerPort => 'http(80)',
Proto => 'tcp');
print "Solicitando '/$URI'\n";
print $sock "HEAD /$URI HTTP/1.0${CRNL}Accept: */*$CRNL$CRNL";
my $resp = $sock->getline;
my ($proto, $status, $words) = $resp =~ m|HTTP/(\d.\d) (\d{3}) (.*)|;
print "Status: $status $words\nProtocolo: HTTP/$proto\n";
print "Extra headers:\n";
while($resp = $sock->getline) {
print $resp;
}
--------- Pie de mensaje --------------------------------
Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text : cancelacion perl