[perl] otra duda
Salman P. S. L.
correo@salmansl.es
Sat, 6 Feb 1999 11:34:07 +0100
Al ejecutar el script tal y como lo ha escrito manuel, yo recibo el
siguiente mensaje:
servidorseguro:# perl verifica.cgi
Content-type: text/html
<html><head><title></title></head><body>
Probando conexión con 'www.arrakis.es'<br>
IO::Socket: Cannot configure a generic socket at verifica.cgi line 12
Y puesto que parece que no tengo el IO::Socket, he quitado tambien el IO::,
dejando solamente el Socket, ante lo cual recibo:
servidorseguro:# perl verifica.cgi
Content-type: text/html
<html><head><title></title></head><body>
Probando conexión con 'www.arrakis.es'<br>
Argument "Socket" isn't numeric in entersub at
/usr/lib/perl5/i586-linux/5.004/Socket.pm line 270.
Your vendor has not defined Socket macro new, used at verifica.cgi line 12
En fin, que a mi tampoco me funciona :-((
Saludos
Salvador Guzman
-----Mensaje original-----
De: Manuel Pérez López <mapelo@writeme.com>
Para: Salvador Ortiz Garcia <sog@msg.com.mx>
CC: perl@tlali.iztacala.unam.mx <perl@tlali.iztacala.unam.mx>
Fecha: sábado 6 de febrero de 1999 2:12
Asunto: RE: [perl] otra duda
Hola a todos y a Salvador:
Primero dar las gracias a Salvador, y comentarle que no he podido
contestarle antes por no disponer de conexión hasta este fin de semana.
Ya el servidor Apache que me ejecuta el script en Perl es el de mi servidor
de webs, modifiqué tu sugerencia para ver si funcinaba levemente, quedándome
algo así como:
#!/usr/bin/perl -w
use IO::Socket::INET;
print "Content-type: text/html\n\n";
print "<html><head><title></title></head><body>\n";
my $CRNL = "\015\012"; # por portabilidad
$ARGV[0]="www.arrakis.es/~mapelo/portada.htm";
my ($addr, $URI) = split('/',$ARGV[0],2);
print "Probando conexión con '$addr'<br>\n";
my $sock = IO::Socket::INET->new(PeerAddr => $addr,PeerPort =>
'http(80)',Proto => 'tcp');
print "Solicitando '/$URI' <br>\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 <br>\n";
print "Extra headers:<br>\n";
while($resp = $sock->getline) {
print "$resp <br>\n";
}
print "</body></html>\n";
sin embargo, me parece que falla la llamada a la rutina IO::Socket::INET,
que supongo tendrá que estar instalada en uno de mis subdirectorios. Busqué
el dichoso paquete y encontré uno llamado Inet.pm, que supuse era el que
necesitaba, pero hace llamadas con 'use' a un montón más de subrutinas, por
lo que he tenido que dejarlo. ¿Salvador, mis razonamientos son correctos, o
estoy divagando demasiado? ¿Cuál es mi error?
Un saludo
**************************************************************
Manuel Pérez López mapelo@writeme.com
en http://www.arrakis.es/~mapelo/
**************************************************************
-----Mensaje original-----
De: Salvador Ortiz Garcia <sog@msg.com.mx>
Para: Manuel Pérez López <mapelo@writeme.com>
CC: perl@tlali.iztacala.unam.mx <perl@tlali.iztacala.unam.mx>
Fecha: lunes 1 de febrero de 1999 21:36
Asunto: Re: [perl] otra duda
>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"
>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
--------- Pie de mensaje --------------------------------
Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text : cancelacion perl