J'ai un immense et précieux besoin d'aide sur la problématique suivante :
Au démarrage d'une machine IPCop (il y en aura beaucoup), je souhaite me connecter à un site web afin "d'enregistrer" la plateforme. Cette connexion ne transmet aucune donnée. Elle se connecte simplement à un script PHP qui s'occupera de récupérer les informations utiles et les stockera dans une base de données.
Je me débrouille en PHP, mais pas en PERL. J'ai eu beau m'inspirer du script "update.cgi", rien n'y fait. Je n'ai pas l'impression que la machine IPCop se connecte au serveur web (pour le moment sur la zone Green).
[EDIT]
A priori sur la zone RED, c'est la même chose... snif...
[/EDIT]
Les machines sont connectées de la façon suivante :
iMac <--RJ45 croisé--> IPCop1 <--HUB--> IPCop2 <--RJ45 croisé--> PC XP
|
Serveur Web
J'ai essayé aussi :
iMac <--RJ45 croisé--> IPCop1 <--RJ45 croisé--> IPCop2 <--HUB--> PC XP
|
Serveur Web
Bien évidemment, lorsque j'essaye mon script dans le second environnement, je le teste uniquement sur IPCop2.
Voici mon script en l'état :
- Code: Tout sélectionner
#################################
#!/usr/bin/perl
use IO::Socket;
use strict;
# enable only the following on debugging purpose
use warnings;
require '/var/ipcop/general-functions.pl';
require "${General::swroot}/lang.pl";
require "${General::swroot}/header.pl";
#workaround to suppress a warning when a variable is used only once
my $errormessage='';
sub downloadlist {
unless (-e "${General::swroot}/red/active") {
$errormessage = 'Impossible de se connecter';
}
my %proxysettings=();
&General::readhash("${General::swroot}/proxy/settings", \%proxysettings);
my $peer = '128.0.1.200';
my $peerport = 88;
if ($_=$proxysettings{'UPSTREAM_PROXY'}) {
($peer, $peerport) = (/^(?:[a-zA-Z ]+\:\/\/)?(?:[A-Za-z0-9\_\.\-]*?(?:\:[A-Za-z0-9\_\.\-]*?)?\@)?([a-zA-Z0-9\.\_\
-]*?)(?:\:([0-9]{1,5}))?(?:\/.*?)?$/);
}
my $sock='';
unless($sock = new IO::Socket::INET (PeerAddr => $peer, PeerPort => $peerport, Proto => 'tcp', Timeout => 5))
{
$errormessage = '128.0.1.200:88 inaccessible';
return 'ARG!!!';
}
my $GET_CMD='';
$GET_CMD = "GET http://128.0.1.200:88/ipcop/record.php HTTP/1.1\r\n";
$GET_CMD .= "Host: 128.0.1.200:88\r\n";
$GET_CMD .= "Cache-Control: no-cache\r\n";
$GET_CMD .= "Connection: close\r\n\r\n";
print $sock "$GET_CMD";
my $ret = '';
while (<$sock>) {
$ret .= $_; }
close($sock);
return $ret;
}
my $test = '';
$test = &downloadlist();
print $test;
#####################################
J'ai le code retour "ARG!!!" à chaque fois... snif...
J'arrive bien à faire un PING sur le serveur web, mais pas de traceroute... est-ce normal ?
Merci de me faire part de vos expérience en la matière (si qqun a déjà testé biensur)...
Fabrice