Script en Perl no me arranca

Iniciado por BenRu, 1 Agosto 2008, 21:44 PM

0 Miembros y 1 Visitante están viendo este tema.

BenRu

Bueno...tenia que usar sockets para una cosa y pensé en Perl por su facilidad y rendimiento...
El script debe visitar una web una cantidad de veces, metidas ambas por el usuario

Antes de nada, dejo claro que este script no es para hacer algún tipo de DOS o algo parecido. No es para atacar NADA.


Lo hice y todo iba bien, hasta cuando metí los bucles...

Creo que el problema es de las variables..pero no tengo ni idea  :-\


Aquí con la última técnologia, goto  :xD :xD

Código (perl) [Seleccionar]
#!/bin/perl
#Ruben Ruiz "BenRu"


use LWP::Simple;
$veces = 0;
$cantidad=<STDIN>; 
inicio:
if ($veces <= $cantidad)
  {
print "\n";
print "Direccion: ";
$page=<STDIN>;   
chop $page;
$url = "http://$page";
$veces = $veces + 1;
goto inicio;
  }
else
  {
    exit();
  }



Aqui con un bucle:

Código (perl) [Seleccionar]
#!/bin/perl
#Ruben Ruiz "BenRu"

use LWP::Simple;
$veces = 0;
$cantidad=<STDIN>; 
while($veces <= $cantidad)
  {
print "\n";
print "Direccion: ";
$page=<STDIN>;   
$url = "http://$page";
print "$url\n";
$veces = $veces + 1;
  }



El interprete no me muestra ningún error y se ejecuta, pero no arranca.


^Tifa^

Pues no entiendo tu teoria... el script hace justamente lo que pides que haga con bucle o sin el. Que es pedirte primero un numero luego pedirte que insertes una data y la imprime en la salida estandar nada mas.... porque dices que no funcion? a mi me va bien y no tiene nada de error el del bucle tampoco;


#!/usr/bin/perl
use strict;

my $veces = 0;
print STDOUT "Inserta un numero\n";
my $cantidad=<STDIN>; 
chomp $cantidad;
while ($veces <= $cantidad)
{
print "Direccion: ";
chomp (my $page=<STDIN>);   
my $url = "http://$page";
print "$url\n";
$veces = $veces + 1;
}


Porque el uso del modulo LWP::Simple si tu codigo no va dirigo a ser CGI para web?
mejor da uso de use strict, and use warnings para debugear el codigo.

BenRu

Bueno...son esas cosas que pasan cuando no sabes un lenguaje de programación  :xD

Y por cierto, el code que has puesto no funciona:
-No visita la url.
-Una vez puesta la url, te vuelve a pedir la dirección...




Novlucker

#3
Y, en que parte del code se supone que dice que se visite la web?  :rolleyes:
La única orden que hay es un print en pantalla  :P

Te recomiendo leer....

http://cpan.uwinnipeg.ca/htdocs/libwww-perl/LWP/UserAgent.html

Saludos  ;)
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

BenRu

Cita de: Novlucker en  1 Agosto 2008, 22:20 PM
Y, en que parte del code se supone que dice que se visite la web?  :rolleyes:
La única orden que hay es un print en pantalla  :P

Código (perl) [Seleccionar]
$page=<STDIN>;   
chop $page;
$url = "http://$page";

Novlucker

#5
Código (perl) [Seleccionar]
$page=<STDIN>;
#Se guarda lo ingresado en la variable page
chop $page;
#Se quita el /n del texto ingresado
$url = "http://$page";
# Se define la variable url como http:// y el texto contenido en page


:rolleyes:
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

^Tifa^

#6
Corazon en ninguna parte de tu codigo (que no puse un codigo hecho por mi, solo corregi parte de la sintaxis del tuyo y eso fue lo que repostee  :-*  ) lo unico que hace es imprimir en pantalla. Que definas dentro de una variable esto ::

my $url="http://$pagina"

No implica que cuando esa variable obtenga el valor de otra variable, va a navegarte a la web. $url es solo una variable, y como tal guarda datos no es una funcion ni una aplicacion que se ejecuta solo existe para guardar datos.... Ahora si tu hicieras esto :

#!/usr/bin/perl
use strict;

my $veces = 0;
print STDOUT "Inserta un numero\n";
my $cantidad=<STDIN>;
chomp $cantidad;
print "Direccion: ";
chomp (my $page=<STDIN>);   
if ( $page ) {
my $url = "http://$page";
$veces = $veces + 1;
for ($veces = 0; $veces < $cantidad; $veces++) {
system("lynx $url");
}
} else {
print STDOUT "Debes insertar algo\n";
}


Que creo que eso es lo que mas o menos andas buscando... y no pretendo ayudar porque aunque digas que no, tu objetivo final es hacer envios de solicitud masivo a cierta web.

BenRu

A ver, yo no digo que este bien ni que está mal, no se Perl.

Tan solo he puesto un código y he dicho que no me funcionaba.

También digo que antes de hacer el bucle y meter las variables del conteo, funcionaba todo a la perfección...

Citary no pretendo ayudar porque aunque digas que no, tu objetivo final es hacer envios de solicitud masivo a cierta web.

Piensas que si mi objetivo es hacer un delito informático iba a postear esto aquí?y con un código tan rudimentario?

No soy tan cutre  :xD

(Perdona que te no devuelva el beso...pero me da mal rollo  ;))

@Novlucker:
http:// + dirección web ($page) = http://www.web.com

Tec-n0x

Pues como dijeron arriba .. el codigo esta mal y EN NINGUNA PARTE LE HACE GET HACIA LA PAGINA.

Puedes hacerlo con LWP Y HTTP::Request :

Código (perl) [Seleccionar]

#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Request;

print "\n\nDame Sitio:\n> ";
$sitio=<STDIN>;
chop($sitio); # Eliminamos el ultimo caracter - IMPORTANTE

print "\n\nCuantas Veces:\n> ";
$times=<STDIN>;
chop($times);

for($x=0;$x<=$times;$x++) {

$ua = LWP::UserAgent->new;
$ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13");
$re = HTTP::Request->new(GET => $sitio);
$response = $ua->request($re);

print "\nVisitado: \t$x";

}


Saludos !

^Tifa^

No he utilizado el modulo HTTP con Perl, asi que desconozco como funcione.

Pero una preguntita, cuando llamas a Mozilla con la funcion agent.. se abre fisicamente Mozilla en el escritorio??? porque de ser asi, seria un problema imaginate que el usuario inserte 50 como contador en el for, se abriran 49 Mozilla en tu escritorio a la vez  :o  :o

Y no podemos basarnos completamente en Mozilla como navegador porque si el usuario no tiene Mozilla instalado??? no se ejecutara el script. deberia moverse mas con Iexplorer