Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Autres langages > [PERL] Executer un script perl > Lecture du sujet

[PERL] Executer un script perl

Vous devez être inscrit pour pouvoir poster des messages

RésoluLe problème de ce sujet a été résolu

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne joboy84 # Posté le 29/06/2008 à 11:33:17
Groupe : Membres
Bonjour,

Je n'y connais rien à perl...Une personne m'a fait un script en perl que je dois lancer sur mon serveur. J'ai placé le fichier dans le repertoire cgi-bin mais ensuite je ne sais pas quoi faire?

J'ai tenté d'accéder au fichier en faisant: http://www.monsite.fr/cgi-bin/scriptperl.pl mais cela me retourne une erreur 500...

Merci
Hors ligne garulfoUnix # Posté le 29/06/2008 à 12:04:00
By the way
Avatar
Groupe : Membres
Tu as vérifié les droits de permissions ?
 
Hors ligne joboy84 # Posté le 29/06/2008 à 12:17:23
Groupe : Membres
Les droits de permission sont 755 j'avais aussi tenté en 777 mais cela n'a rien changé...

J'ai le message suivant:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

J'ai vu:

More information about this error may be available in the server error log.

Mais dans quels log? (j y ai acces)

merci
Édité le 29/06/2008 à 12:19:15 par joboy84
Hors ligne garulfoUnix # Posté le 29/06/2008 à 12:57:58
By the way
Avatar
Groupe : Membres
Tu utilises Apache ?
 
Hors ligne joboy84 # Posté le 29/06/2008 à 14:31:05
Groupe : Membres
Oui...

Apres verification dans le log apache, j'ai:

Code : HTML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
[Sun Jun 29 14:01:03 2008] [error] [client 71.72.45.xxx] Scalar value
@threads[$t] better written as $threads[$t] at hosts.pl line 59.
[Sun Jun 29 14:01:03 2008] [error] [client 71.72.45.xxx] Scalar value
@threads[$t] better written as $threads[$t] at hosts.pl line 60.
[Sun Jun 29 14:01:03 2008] [error] [client 71.72.45.xxx] Scalar value
@threads[$t] better written as $threads[$t] at hosts.pl line 70.
[Sun Jun 29 14:01:03 2008] [error] [client 71.72.45.xxx] Scalar value
@threads[$t] better written as $threads[$t] at hosts.pl line 71.
[Sun Jun 29 14:01:03 2008] [error] [client 71.72.45.xxx] Scalar value
@threads[$t] better written as $threads[$t] at hosts.pl line 72.
[Sun Jun 29 14:01:03 2008] [error] [client 71.72.45.xxx] "my"
variable @threads masks earlier declaration in same scope at hosts.pl line 80.
[Sun Jun 29 14:01:03 2008] [error] [client 71.72.45.xxx] Scalar value @row[1]
better written as $row[1] at hosts.pl line 84.
[Sun Jun 29 14:01:03 2008] [error] [client 71.72.45.xxx] Scalar value @row[1]
better written as $row[1] at hosts.pl line 86.
[Sun Jun 29 14:01:04 2008] [error] [client 71.72.45.xxx] Use of uninitialized
value in pattern match (m//) at hosts.pl line 45.
[Sun Jun 29 14:01:04 2008] [error] [client 71.72.45.xxx] Use of uninitialized
value in pattern match (m//) at hosts.pl line 45.
[Sun Jun 29 14:01:04 2008] [error] [client 71.72.45.xxx] Use of uninitialized
value in pattern match (m//) at hosts.pl line 45.

Édité le 29/06/2008 à 16:30:57 par joboy84
Hors ligne Revan76 # Posté le 29/06/2008 à 23:27:10
Avatar
Groupe : Membres
Ahah, j'ai eut le même problème tout à l'heure. :)

j'ai découvert que lorsque j'envoyais mes fichier les permissions étaaient automatiquement changées en 777. (ce qui fait que ca ne marche pas )

J'utilise gftp et une fois uploadés, je sélectionne tous les fichiers et je modifie les permissions.

peut-etre as-tu le même probleme.
 
Hors ligne joboy84 # Posté le 30/06/2008 à 10:51:49
Groupe : Membres
Bonjour,

En fait, le probleme ne venait pas de la...mais apparemment tout est rentré dans l'ordre...Le script s'execute mais il reste des bugs!

En effet, lorsque le script parcours les url à parser, il récupère bien des url...mais il est très fréquent qu'il n'arrive pas à retrouver l'ip du serveur à partir de l'url...alors qu'avec gethostbyname de php cela fonctionne!

Y a t-il des bugs?

Code : Perl
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
my $cgi = CGI->new;
print $cgi->header;
$| = 1;

$Config{useithreads} or die "Recompile Perl with threads to run this program. \n";
my @threads;
my $threadcount = 20;
my $enablethreading = 1;

my $maxhostsperurl = 0;

my $dbh;

sub connectDB {
	...données pour connection à la base
}

sub processHost {
	my ($host) = @_;
	my ($ip) = `host -W 3 -t A $host 2>/dev/null` =~ m/[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+/g;
	connectDB();
	if ($ip) {
		print "<b>[ " . threads->self()->tid() . " ]</b> <a href=\"http://$host\">$host</a> - $ip <br/>\n";
		$dbh->prepare("INSERT IGNORE INTO listeIp (Ipadress, url, Type, InsertDate) VALUES ('$ip', '$host', 'WebProxy', NOW())")->execute();
	} else {
		print "<b>[ " . threads->self()->tid() . " ]</b> <a href=\"http://$host\">$host</a> - NO IP <br/>\n";
		$dbh->prepare("INSERT IGNORE INTO UrltoVerify (url) VALUES ('$host')")->execute();
	}
}

sub parseHosts {
	my ($url) = @_;
	my $content = `curl --header "User-agent: " $url 2>&1`;
	my $hostpattern = "[a-z0-9][a-z0-9-]*[.][a-z.]+[a-z]";
	my $p1 = "value=[\"]($hostpattern)[\"]";
	my $p2 = "<li>($hostpattern)";
	my $p3 = "<a>($hostpattern)";
	my $c = 0;
	while ($content =~ m/($p1)|($p2)|($p3)/igs) {
		if ($maxhostsperurl > 0 && ++$c > $maxhostsperurl) {
			print "<b>Thread " . threads->self()->tid() . " exiting, after $maxhostsperurl hosts in test mode.</b> Set \$maxhostsperurl to 0 for a full run. <br/>\n";
			return;
		}
		if ($2) {
			processHost($2);
		} elsif ($4) {
			processHost($4);
		} elsif ($6) {
			processHost($6);
		}
	}
}

sub parseHostsThreaded {
	my ($url) = @_;
	for (my $t = 0; $t < $threadcount; $t++) {
		if (!$threads[$t]) {
			$threads[$t] = threads->new(\&parseHosts, $url);
			return;
		}
	}
	closeOpenThreads();
	parseHostsThreaded($url);
}

sub closeOpenThreads {
	for (my $t = 0; $t < $threadcount; $t++) {
		if ($threads[$t]) {
			$threads[$t]->join();
			$threads[$t] = 0;
		}
	}
}

connectDB();
my $sth = $dbh->prepare("SELECT * FROM listeUrl");
$sth->execute;
my $t = -1;
while (my @row = $sth->fetchrow_array()) {
	if ($enablethreading) {
		parseHostsThreaded($row[1]);
	} else {
		parseHosts($row[1]);
	}
}
closeOpenThreads();
Édité le 30/06/2008 à 10:57:25 par joboy84
Hors ligne \°_°/ # Posté le 01/07/2008 à 05:50:05
Groupe : Membres
Salut !

ca `host -W 3 -t A $host 2>/dev/null` c'est comme system("host -W 3 -t A $host 2>/dev/null");

essaiz de voir escke la cmd shell "host -W 3 -t A $host 2" ca marche

& dsl j'ai lu & re-lu mais j'ai pas compri le but de votre Script o_O?

Bye!
Hors ligne joboy84 # Posté le 06/07/2008 à 17:04:32
Groupe : Membres
Bonjour,

Le probleme venait bien de la! Merci!

Concernant le but du script, c'est de récupérer l'adresse ip d'un serveur à partir de son url...

J'ai en effet une liste d'adresses url dans ma base, et j'ai besoin de connaitre les adresses ip des serveurs hébergeant ces sites...
Hors ligne Knarf2 # Posté le 07/07/2008 à 08:56:57
Free the Lemmings
Avatar
Groupe : Membres
En plaçant ceci avec les autres fonctions :
Code : Perl
1
2
3
4
5
use Socket;
sub getip {
    my $addr = gethostbyname(shift);
    $addr ? inet_ntoa $addr : undef;
}


my ($ip) = `host -W 3 -t A $host 2>/dev/null` =~ m/[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+/g;
devient
my $ip = getip($host);

< Absent pour un certain temps... Ou bien un temps incertain ? (étude, internat, toussa) >

< Image utilisateur >
< GU/MU/CS@ d- s: a--- C+++ U+ P++ L++ E>+ W++ N+ o? !K? w->-- !O? M- !V PS>+ !PE !Y? PGP- t 5- X R tv- b+ !DI--- D+ G e-? h!-- r--- y-- >
< site >

 
Hors ligne joboy84 # Posté le 07/07/2008 à 14:22:28
Groupe : Membres
Bonjour Knarf,

pourquoi ajouter cette fonction?

Car actuellement avec les 2 lignes que tu à mises qui correspondent à mon script, cela fonctionne deja... :euh:

Merci de m'eclaircir :D
Hors ligne zulon # Posté le 07/07/2008 à 16:24:14
The shrieker shrieks.
Avatar
Groupe : Membres
Pour ne pas devoir utiliser une solution externe à Perl, et faire un truc plus propre, permettant ainsi un gain de vitesse, je suppose.

Retour au forum "Autres langages" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 163 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0369s (0.0212s)